google-chrome-extension - 拦截(可能取消)页面的鼠标/键盘事件处理程序

标签 google-chrome-extension textselection

我正在尝试创建一个处理选定文本的 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/

相关文章:

javascript - 防止双击选择文本

WinAPI:在不使用剪贴板的情况下获取事件窗口的文本选择

javascript - 计算文本选择的 xy 位置

javascript - 在 Chrome 扩展中的网络应用默认操作之前执行自定义 onClick 操作

javascript - 在 'document_start' 处运行的内容脚本会阻止网页上的 JS 脚本?

google-chrome-extension - 如何在 Chrome 插件中将多个域添加到 content_security_policy?

node.js - 如何从 Electron 桌面应用程序中获取当前选定的文本?

javascript - 在 chrome 扩展中如何触发停用事件?

google-chrome-extension - Chrome 扩展程序图标没有颜色

flutter - 在 SelectionArea 中设置选定的文本