2011-06-17 16 views
8

Quello che voglio fare è:menu di scelta rapida dell'estensione cromati, come visualizzare una voce di menu solo quando non c'è alcuna selezione?

se l'utente non seleziona nulla, visualizzazione voce di menu A;

se l'utente seleziona qualcosa, voce di menu Display B.

Finora quello che posso ottenere è:

se l'utente non seleziona nulla, visualizzazione voce di menu A;

se l'utente seleziona qualcosa, visualizzare sia A che B.

Voglio sapere:

come fare voce A scompaiono quando c'è di selezione?

Grazie mille!

Qui di seguito è il mio codice:

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

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

risposta

7

Si avrebbe bisogno di introdurre uno script del contenuto di ogni pagina che controllare su mousedown evento (prima che venga visualizzato il menu) se c'è una selezione sulla pagina, quindi invia un comando a una pagina di sfondo per creare le voci del menu.

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

cool trick dude –

+0

Grazie. Ho provato il tuo codice e non è apparso nessun menu di scelta rapida. Poi sono tornato al mio codice originale e miracolosamente ha funzionato come volevo. Non capisco perché. Ci proverò su un altro computer. Grazie mille. – Betty

0

forse questo era un bug o la funzionalità era diversa indietro quando l'OP originariamente ha fatto la domanda (17 giugno , 2011); ma oggi, il codice dell'OP funziona esattamente come previsto semplicemente usando i parametri contexts nelle sue chiamate chrome.contextMenus.create(), esattamente come lei ha scritto.

Problemi correlati