2012-06-06 13 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