2012-10-31 3 views
21

Diese Funktion hat einen Rückruf wie: function (Array eines beliebigen Ergebnisses) {...};über chrome.tabs.executeScript (ID, Details, Callback)

Aber ich weiß nicht, was das Ergebnis bedeutet.

Zum Beispiel chrome.tabs..executeScript (null, {Code: "var x = 10"}, Funktion() {});

wie das "x" an den Rückruf zurückgeben?

+0

Sehen Sie sich [diese Frage in Google Groups] an (https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/chromium-extensions/Nco_o24bZ9A). – Stan

Antwort

31

Das Ergebnis eines Skripts ist der letzte ausgewertete Ausdruck. Also in Ihrem Beispiel könnten Sie verwenden:

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

Dies wird log [10] auf die Erweiterung der Konsole.

Ergebnisse ist eigentlich ein Array von Werten, denn wenn die Seite mehr als einen Frame hat, können Sie angeben, dass das Skript in jeden einzelnen injiziert werden soll und das Ergebnis aller Injektionen erhalten soll. Siehe die Spezifikation für executeScript. Wenn Sie allFrames nicht angeben: true, dann Ergebnisse wird immer ein einzelnes Element-Array sein.

+0

Ich habe dieses 'chrome.tabs.executeScript (null, {code:" var x = 10; x "}, Funktion (Ergebnisse) {alert (results);});' wird aber als Warnung undefiniert. Hast du eine Ahnung, warum das passieren könnte? – user1032613

+2

@ user1032613 Dies passiert, wenn Ihre Erweiterung keine Berechtigungen zum Ausführen eines Skripts auf der aktuellen Registerkarte hat. Stellen Sie sicher, dass die Domain in der Einstellung "permissions" Ihrer Datei "manifest.json" enthalten ist. – rsanchez

+1

Vielen Dank! Und ich habe gerade festgestellt, dass Änderungen, die an manifest.json vorgenommen wurden, erst nach der Neuinstallation der Erweiterung wirksam werden. – user1032613

Verwandte Themen