Захватывать клики, даже когда вызывается stopPropagation (т. Е. По стороннему коду)?

Я хочу обнаружить любой клик, который происходит на странице (чтобы закрыть пользовательское контекстное меню). Я использую JQuery и пытаюсь сделать

$(document).click(function(){ ...close my context menu ... });

Однако я использую некоторый код, который вызывает evt.stopPropagation() в обработчиках кликов для определенных элементов на странице, и эти клики не попадают в мой обработчик верхнего уровня. Есть ли способ захвата этих кликов? Может быть JQuery или не JQuery, если он работает кросс-браузер.

2 ответа

Если устаревший код обрабатывает щелчок во время фазы всплытия, вы можете обработать щелчок в фазе захвата. Пытаться:

element1.addEventListener('click', doSomethingFunction, true);

Здесь все очень хорошо объяснено: http://www.quirksmode.org/js/events_order.html

Вы пытались добавить невидимый элемент div на свою страницу, а затем добавить его "показывающий" (не совсем потому, что он невидим), когда ваше меню вверх. Затем вы можете прикрепить прослушиватель событий к невидимому div, который закрывает всплывающее окно и скрывает div.

Другие вопросы по тегам