是否可以停止向浏览器扩展的传播?

时间:2018-10-05 16:24:45

标签: javascript browser-extension stoppropagation lastpass

LastPass浏览器扩展正在“鼠标”事件内执行一些代码,当页面上有数千个输入元素(复选框)时,这会使我的页面放慢速度。我知道,我知道,但是它在树的每个节点上都有复选框的大型树控件中。

我在https://forums.lastpass.com/viewtopic.php?f=12&t=286955

的LastPass论坛上发现了一个谈论此事的人

但是,由于LastPass对此帖子没有任何回应,我想知道是否有一种方法可以停止将事件传播到LastPass,以防止它在我知道会导致速度下降的页面上传递给他们

是否可以拦截事件并阻止其传播到浏览器扩展?

我尝试添加“ onmouseup”处理程序并调用event.stopPropagation()和event.stopImmediatePropagation(),但这似乎并未阻止浏览器扩展程序运行其“ mouseup”功能。
在发生这种情况的地方,我不需要LastPass扩展,并且在禁用扩展时,我不会遇到速度变慢的情况。

LastPass profiler 这是Chrome的探查器的屏幕截图,显示了每个mouseup上发生的757ms延迟!添加到jQuery的Sizzle选择器延迟为267ms,它在浏览我页面上的树控件时非常缓慢。 / p>

1 个答案:

答案 0 :(得分:0)

只是想把这个问题解决掉,以防有人问同样的问题。

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事件仍然会触发。

不知道为什么这让我迷惑不解...希望它也会对其他人有所帮助。