Можно ли остановить распространение на расширение браузера? - PullRequest
0 голосов
/ 05 октября 2018

Расширение браузера LastPass выполняет некоторый код в событии mouseup, которое замедляет мою страницу, когда на странице несколько тысяч элементов ввода (флажков).Я знаю, я знаю, но это внутри большого элемента управления деревом с флажками на каждом узле дерева.

Я нашел, что кто-то говорил об этом на форумах LastPass здесь: https://forums.lastpass.com/viewtopic.php?f=12&t=286955

Однако, поскольку LastPass не получил никакого ответа на этот пост, мне было интересно, есть ли способ остановить распространение события на LastPass, чтобы предотвратить переход к ним на страницах, где я знаю, что это приведет к замедлению.

Есть ли способ перехватить событие и остановить его распространение на расширение браузера?

Я попытался добавить обработчик "onmouseup" и вызвать event.stopPropagation () и event.stopImmediatePropagation (), но, похоже, это не мешает расширению браузера запускать его функцию «mouseup».
Там, где это происходит, мне не нужно расширение LastPass, и когда я отключаю расширение, яне испытывайте замедления.

LastPass profiler Вот снимок экрана профайлера Chrome, показывающий задержку в 757 мс, которая составляетпроисходит в каждую мышку !! Добавьте к этому задержку селектора Sizzle в jQuery, равную 267 мс, и просто мучительно медленно перемещайтесь по древовидному элементу управления на моей странице.

1 Ответ

0 голосов
/ 17 октября 2018

Просто хотел закрыть это на случай, если кто-нибудь придет сюда с тем же вопросом.

e.stopImmediatePropagation сработал.Проблема, с которой я не работал, связана с событием Capturing vs Bubbling .Событие, которое я пытался предотвратить, было зарегистрировано с помощью useCapture = true.Для того чтобы stopImmediatePropagation работал, мне также пришлось добавить событие с useCapture = true.

$(document).ready(function () {
    //this is to stop LastPass from listening to mouseup on my page
    window.addEventListener('mouseup', function (e) {
        e.stopImmediatePropagation();
    }, true);
});

Хорошая новость заключается в том, что события click по-прежнему генерируются, хотя я прекратил всю обработкуmouseup.

Не знаю, почему это ускользнуло от меня ... надеюсь, это поможет и кому-то еще.

...