Захватывать клики, даже когда вызывается 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.