0

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

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

更新

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

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

当用户按预期右键单击任何<a>标签时,该项目就会显示。我想要做的是阻止它在用户在我自己的网站内时出现。

4

1 回答 1

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({...});
                        }
                });
        }
});

看起来不是很有效,但没有其他方法可以绕过 afaik。虽然它工作得非常顺利,因此用户在显示菜单之前将无法看到您正在重新创建菜单。

于 2012-06-06T23:43:21.173 回答