我正在尝试创建一个处理选定文本的 Chrome 扩展程序。一些网站页面的其他可选文本内容具有导航到新页面的单击/鼠标向上/向下事件处理程序。
有没有办法从后台或内容脚本临时禁用(和恢复)页面的任意事件处理程序而不干扰 native 文本选择?
我想到的最坏情况是分离,克隆正文 html,允许选择,然后恢复绑定(bind)的原始文件。好像麻烦了
谢谢!
最佳答案
大多数 HTML DOM 事件遵循 capture-target-bubble event model .这意味着,例如,如果您单击一个按钮,“click”事件首先在根处调度,一直到该按钮,然后再返回。可以停止事件传播,从而防止下一级的事件监听器收到事件通知。
最早接收事件的可能性是在根,通常是 window
在捕获阶段。要将事件监听器绑定(bind)到捕获阶段,请使用 addEventListener
第三个参数设置为 true
:
// in a content script, at run_at:document_start
window.addEventListener('click', function(event) {
event.stopImmediatePropagation();
}, true);
很多网页使用 jQuery 来管理 DOM 事件,它在冒泡阶段绑定(bind)了事件监听器,所以之前的方法适用于大多数网站。如果页面不使用 jQuery,那么你必须在
document_start
处绑定(bind)你的事件监听器。确保在所有其他事件监听器之前触发您的事件监听器。
关于google-chrome-extension - 拦截(可能取消)页面的鼠标/键盘事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25815902/