LastPass浏览器扩展正在“鼠标”事件内执行一些代码,当页面上有数千个输入元素(复选框)时,这会使我的页面放慢速度。我知道,我知道,但是它在树的每个节点上都有复选框的大型树控件中。
我在https://forums.lastpass.com/viewtopic.php?f=12&t=286955
的LastPass论坛上发现了一个谈论此事的人但是,由于LastPass对此帖子没有任何回应,我想知道是否有一种方法可以停止将事件传播到LastPass,以防止它在我知道会导致速度下降的页面上传递给他们
是否可以拦截事件并阻止其传播到浏览器扩展?
我尝试添加“ onmouseup”处理程序并调用event.stopPropagation()和event.stopImmediatePropagation(),但这似乎并未阻止浏览器扩展程序运行其“ mouseup”功能。
在发生这种情况的地方,我不需要LastPass扩展,并且在禁用扩展时,我不会遇到速度变慢的情况。
这是Chrome的探查器的屏幕截图,显示了每个mouseup上发生的757ms延迟!添加到jQuery的Sizzle选择器延迟为267ms,它在浏览我页面上的树控件时非常缓慢。 / p>
答案 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
事件仍然会触发。
不知道为什么这让我迷惑不解...希望它也会对其他人有所帮助。