2012-06-06 12 views
0

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

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

UPDATE

人们似乎混淆了我在做什么所以这里的代码。在我的“BACKGROUND_PAGE”我的项目添加到右键菜单,如下所示:

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

该项目显示了当用户预期在任何<a>标签右侧点击。我想要做的就是防止当用户在我自己的网站中时显示它。

+0

这是行得通吗? '(函数disableRightClick() { \t如果(document.layers) \t { \t \t document.captureEvents(Event.MOUSEDOWN); \t \t document.onmousedown =函数(){如果((document.layers || document.allElementById &&!document.all)&&(e.which == 2 || e.which == 3))return false;}; \t} \t else if(document.all &&!document.getElementById)document.onmousedown = function(){if(event.button == 2)return false;}; \t document.oncontextmenu = new Function(“return false;”); })();' – Mageek

+0

@Mageek我不想要d可以在整个上下文菜单中找到,只是我的菜单项。 – Endophage

+0

你的意思是你的选择或弹出页面? – Oliver

回答

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没有其他办法。它的工作非常流畅,因此用户在显示菜单之前无法看到您正在重新创建菜单。

+0

我在想这样的事情可能会奏效,现在我不会浪费时间:-)如果没有人在接下来的24小时内发布更优雅的解决方案,我会接受这个答案。 +1现在 – Endophage