2012-10-31 8 views
21

Questa funzione ha un callback come: function (array di qualsiasi risultato) {...};about chrome.tabs.executeScript (id, dettagli, callback)

Ma non so quale sia il risultato significa.

Ad esempio, chrome.tabs..executeScript (null, {codice: "var x = 10"}, function() {});

come restituire la "x" alla richiamata?

+0

Guarda [questa domanda in Google Gruppi] (https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/chromium-extensions/Nco_o24bZ9A). – Stan

risposta

31

Il risultato di uno script è l'ultima espressione valutata. Quindi nel tuo esempio si potrebbe usare:

chrome.tabs.executeScript(null, {code:"var x = 10; x"}, 
    function(results){ console.log(results); }); 

Ciò registrerà [10] alla console del prolungamento.

risultati è in realtà una matrice di valori perché se la pagina ha più di un frame è possibile specificare che lo script deve essere iniettato in ciascuno di essi e ottenere il risultato di tutte le iniezioni. Vedere le specifiche per executeScript. Se non si specifica allFrames: true, quindi i risultati saranno sempre un array di elementi singolo.

+0

Ho questo 'chrome.tabs.executeScript (null, {codice:" var x = 10; x "}, funzione (risultati) {avviso (risultati);});' ma diventa indefinito come avviso. Hai qualche idea del perché questo potrebbe accadere? – user1032613

+2

@ user1032613 che avverrà se l'estensione non dispone delle autorizzazioni per eseguire uno script nella scheda corrente. Assicurati che il dominio sia incluso nell'impostazione 'permessi' di' manifest.json' – rsanchez

+1

Grazie! E ho appena realizzato che, le modifiche apportate a manifest.json avranno effetto solo dopo aver reinstallato l'estensione. – user1032613

Problemi correlati