我正在尝试创建一个处理所选文本的Chrome扩展程序。某些网站页面的其他可选文本内容具有导航到新页面的点击/鼠标按下/向下事件处理程序。
是否有一种方法可以从后台或内容脚本暂时禁用(和恢复)页面的任意事件处理程序,而不会干扰本机文本选择?
最糟糕的情况我想的是分离,克隆体html,允许选择,然后恢复绑定的原始。好像很麻烦。
谢谢!
答案 0 :(得分:7)
大多数HTML DOM活动都遵循capture-target-bubble event model。这意味着,例如,如果您点击一个按钮,那么"点击"事件首先在根目录下调度,一直到按钮,然后备份。可以停止事件传播,这可以防止下一级别的事件侦听器收到事件通知。
接收事件的最早可能性是在根部,通常在捕获阶段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
绑定事件侦听器,以确保在每个其他事件侦听器之前触发事件侦听器。