拦截(也许还可以取消)页面's鼠标/键盘事件处理程序



我正在尝试创建一个处理所选文本的Chrome扩展。一些网站页面的其他可选文本内容具有导航到新页面的点击/鼠标上下事件处理程序。

是否有一种方法可以从后台或内容脚本临时禁用(和恢复)页面的任意事件处理程序,而不会干扰本机文本选择

我想到的最糟糕的情况是分离,克隆body html,允许选择,然后恢复绑定的原始文件。看起来很麻烦。

谢谢!

大多数HTML DOM事件遵循捕获目标气泡事件模型。这意味着,例如,如果您单击某个按钮,则"单击"事件首先在根目录下发送,一直发送到该按钮,然后再返回。可以停止事件传播,从而防止下一级别的事件侦听器收到事件通知。

接收事件的最早可能性是在根,通常是在捕获阶段的window。要将事件侦听器绑定到捕获阶段,请使用addEventListener,第三个参数设置为true:

// in a content script, at run_at:document_start
window.addEventListener('click', function(event) {
    event.stopImmediatePropagation();
}, true);

许多网页使用jQuery来管理DOM事件,它在冒泡阶段绑定事件侦听器,因此前面的方法适用于大多数网站。如果页面不使用jQuery,则必须在document_start处绑定事件侦听器,以确保在其他所有事件侦听器之前触发事件侦听器。

最新更新