0

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

我发现有人在 LastPass 论坛上讨论这个问题:https ://forums.lastpass.com/viewtopic.php?f=12&t=286955

但是,由于 LastPass 没有对该帖子作出回应,我想知道是否有办法停止将事件传播到 LastPass,以防止它在我知道会导致速度减慢的页面上发送给他们。

有什么方法可以拦截事件并阻止它传播到浏览器扩展?

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

LastPass 分析器 这是 Chrome 分析器的屏幕截图,显示每次 mouseup 都会发生 757 毫秒的延迟! 再加上 jQuery 的 Sizzle 选择器延迟为 267 毫秒,而且在我的页面上导航树控件的速度非常慢。

4

1 回答 1

1

只是想关闭它,以防有人带着同样的问题来到这里。

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.

不知道为什么这让我感到困惑......希望它也能帮助其他人。

于 2018-10-17T13:59:49.057 回答