禁用自己网站上的chrome上下文菜单选项

时间:2012-06-06 19:32:04

标签: javascript google-chrome google-chrome-extension

如何在我自己的网站中禁用由我自己的chrome扩展程序创建的上下文菜单项?对于Chrome扩展程序中的内容脚本,有excludes_matches选项,但上下文菜单似乎没有等效项。

我只是不希望当用户在我自己的网站上时显示我正在添加的上下文菜单项。

更新

人们似乎对我正在做的事情感到困惑,所以这里是代码。在我的“background_page”中,我将一个项目添加到上下文菜单中,如下所示:

chrome.contextMenus.create(
{
    "title": "My Context Menu Item",
    "contexts": ["link"],
    "onclick": myContextItemClicked
});

当用户按预期正确点击任何<a>代码时,该项会显示。我想做的是当用户在我自己的网站内时阻止它出现。

1 个答案:

答案 0 :(得分:1)

我通过在注入每个页面的内容脚本中触发mousedown事件上的菜单创建来解决类似问题。类似的东西:

内容脚本:

document.addEventListener("mousedown", function(event){
        if(event.button == 2) {
                chrome.extension.sendRequest({"createMenu"});
        }
}, true); 

背景页面:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
        if(request === "createMenu") {
                chrome.contextMenus.removeAll(function() {
                        if(sender.tab.url != "http://mysite.com") {
                            chrome.contextMenus.create({...});
                        }
                });
        }
});

看起来不是很有效但是没有其他方法可以解决这个问题。它的工作非常流畅,因此用户在显示之前将无法看到您正在重新创建菜单。