2011-06-17 30 views
8

我想要做的是:Chrome擴展上下文菜單,如何僅在沒有選擇時顯示菜單項?

,如果用戶不選擇任何內容,顯示菜單項;

如果用戶選擇的東西,顯示的菜單項B.

到目前爲止,我所得到的是:

,如果用戶不選擇任何內容,顯示菜單項;

如果用戶選擇的東西,同時顯示A和B.

我想知道:

如何使項目A消失時,有選擇?

非常感謝!

下面是我的代碼:

var all = chrome.contextMenus.create 
({ 
    "title": "A", 
    "contexts":["page"], 
    "onclick": doA 
}); 

var selection = chrome.contextMenus.create 
({ 
    "title": "B", 
    "contexts":["selection"], 
    "onclick": doB 
}); 

回答

7

您將需要注入的內容腳本,每一個網頁,其中將檢查mousedown事件(菜單顯示)之前是否有一個選擇的頁面,然後將命令發送到後臺頁面以創建相應的菜單項。

content_script.js:

document.addEventListener("mousedown", function(event){ 
    //right click 
    if(event.button == 2) { 
     if(window.getSelection().toString()) { 
      chrome.extension.sendRequest({cmd: "createSelectionMenu"}); 
     } else { 
      chrome.extension.sendRequest({cmd: "createRegularMenu"}); 
     } 
    } 
}, true); 

background.html

chrome.extension.onRequest.addListener(function(request) { 
    if(request.cmd == "createSelectionMenu") { 
     chrome.contextMenus.removeAll(function() { 
      chrome.contextMenus.create({ 
       "title": "B", 
       "contexts":["selection"], 
       "onclick": doB 
      }); 
     }); 
    } else if(request.cmd == "createRegularMenu") { 
     chrome.contextMenus.removeAll(function() { 
      chrome.contextMenus.create({ 
       "title": "A", 
       "contexts":["page"], 
       "onclick": doA 
      }); 
     }); 
    } 
}); 
+0

超酷花花公子 – 2011-06-17 18:35:12

+0

謝謝。我試過你的代碼,並沒有出現上下文菜單。然後我改回原來的代碼,奇蹟般地按我的想法工作。我不明白爲什麼。我會在另一臺電腦上試用它。非常感謝你。 – Betty 2011-06-20 05:23:43

0

也許這是一個錯誤或功能是不同回來時OP最初提出的問題(06月17日,2011);但是今天,OP的代碼完全按照預期的方式工作,只需在她的chrome.contextMenus.create()調用中簡單使用contexts參數,就如她寫的一樣。

相關問題