javascript - 如何使用 chrome 扩展解除 document.ondblclick 的绑定(bind)

标签 javascript google-chrome google-chrome-extension

一些网站

<SCRIPT SRC="js/tt2.js"></SCRIPT>

tt2.js

toggle=0;
function dblclick() {
    if (toggle==0) {
        var sc=99999; toggle=1;
    } else {
        var sc=0; toggle=0;
    }
    window.scrollTo(0,sc);
}
if (document.layers) {
    document.captureEvents(Event.ONDBLCLICK);
}
document.ondblclick=dblclick;

“document.ondblclick = null;”是行不通的。 如何使用 chrome 扩展删除(取消绑定(bind))dblclick 事件?

最佳答案

原因:

您可以覆盖document.ondblclick。问题在于上下文。您有 chrome-extension 上下文和 page-context。

possible context

为了进行测试,您可以在扩展程序中添加以下内容:

document.ondblclick = function () {
    alert("chrome extension ondblclick event");
}

您可以在两种上下文中查看该事件:

event callbacks on each context

如果您触发此事件,您将看到这两个事件都被调用。

解决方案:

您需要的是覆盖页面上下文中的ondblclick。真正简单的方法是将您自己的脚本添加到页面中 - 然后它将在页面上下文中运行。

要注入(inject)脚本,您可以编写inject.js:

(function(){
    var scriptElement = document.createElement('script');
    scriptElement.setAttribute('type', 'text/javascript');
    scriptElement.setAttribute('src', chrome.runtime.getURL('js/ownOndblclick.js'));

    document.getElementsByTagName('head')[0].appendChild(scriptElement);
}());

并且您需要必须注入(inject)的脚本。在本例中,这是 ownOndblclick.js:

document.ondblclick = function () {
    alert("free");
}

警报仅用于测试。当您看到它按预期工作后将其删除。 最后一步是调整 manifest.json:

{
    ...

    "permissions": [
        "http://whereever/*"
    ],

    "content_scripts": [
        {
            "matches": ["http://whereever/*"],
            "js": ["js/inject.js"]
        }
    ],

    "web_accessible_resources" : [
        "js/ownOndblclick.js"
    ]
}

就是这样。

注入(inject) ownOndblclick.js 的另一种方法是将其直接放入 inject.js 中:

(function(){
    var scriptElement = document.createElement('script');
    scriptElement.setAttribute('type', 'text/javascript');
    scriptElement.innerText = 'document.ondblclick = function () { alert("free");}';

    document.getElementsByTagName('head')[0].appendChild(scriptElement);
}());

然后您可以从 manifest.json 中删除 web_accessible_resources

关于javascript - 如何使用 chrome 扩展解除 document.ondblclick 的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115653/

相关文章:

swift - AVFoundation 连接视频和音频

javascript - Chrome 扩展 - 将文件从本地主机加载到 content_scripts

javascript - 如何使用正确计数的 jQuery 动态添加一些个性化文本 + id 属性?

javascript - 如何停止在当前窗口下打开帐户选择器窗口

javascript - 在 Chrome 中正确设置和查询背景颜色(来自 Javascript)

twitter - 如何在我的谷歌浏览器扩展中实现 twitter Oauth

javascript - 在上下文菜单项单击上显示侧边栏/弹出窗口的最佳方式是什么?

javascript - 如何在 Chrome 扩展程序中检测窗口最小化/最大化事件?

asp.net - 在 Javascript 中从对象数组创建 HTML 表

javascript - 对象无冲突后无方法报错