<div class='wrapper'>
<button class='child'>Click me</button>
</div>
function h(e) {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
alert(e.type);
return false;
}
document.querySelector('.wrapper').addEventListener('mouseup', h, false);
document.querySelector('.child').addEventListener('click', h, false);
Я ожидаю, что это предотвратит запуск события 'click', но это не так. Однако изменение mouseup
до mousedown
фактически предотвращает событие click.
Я также попытался установить аргумент useCapture
в значение true, и это также не приведет к желаемому поведению с mouseup
. Я протестировал это в Chrome и Firefox. Прежде чем я напишу об ошибках, я решил, что спрошу здесь.
Является ли это ошибкой в текущих браузерах или это документированное поведение?
Я рассмотрел стандарт W3C (уровень DOM 2), и я не смог найти ничего, что могло бы объяснить это поведение, но я мог что-то пропустить.
В моем конкретном случае я пытаюсь отделить две части кода, которые прослушивают события на одном и том же элементе, и я решил использовать события захвата со стороны, которая имеет приоритет, будет самым изящным способом решить эту проблему, но то я столкнулся с этой проблемой. FWIW, я должен поддерживать официально поддерживаемые версии FF и Chrome (включая ESR для FF).