chrome.tabs.get
funktioniert anscheinend nicht im Inhaltsskript, und außer dem Senden durch chrome.extension.sendRequest
habe ich keine Ahnung, wie der Hintergrund auf die richtige Registerkarte reagieren soll.
Wie kann ich veranlassen, dass das Inhaltsskript Informationen an die Hintergrundseite sendet, und die Hintergrundseite die Informationen dann an die Registerkarte zurückgibt, von der sie gekommen ist?
BEARBEITEN : Diese Antwort ist veraltet und verwendet veraltete Funktionen. Bitte verwenden Sie stattdessen andere Antworten.
Nun, lassen Sie mich Ihnen erklären, Alter;)
Senden Sie zuerst eine Nachricht von Ihrem Content-Skript wie folgt:
Inhaltsskript - Senden der Nachricht
%Vor%Hintergrundseite - Empfangen Sie die Nachricht und die Antwort
%Vor%ContentScript - Fügen Sie einen Listener hinzu
%Vor%Als Dankeschön an alle, die diese Frage nach 2011 sehen, habe ich eine Antwort gegeben, die die neueren Konventionen und APIs verwendet. Dies ist eine ziemlich populäre Frage und die akzeptierte Antwort ist an diesem Punkt etwas altmodisch (aber immer noch eine genaue Antwort), daher sollte dies für Neuankömmlinge hoffentlich eine klarere und treffendere Antwort auf die Frage geben.
Zunächst können Sie mit chrome.runtime.sendMessage eine Nachricht aus dem Inhaltsskript senden. Dies wird wahllos die Nachricht senden, wenn ein Laufzeit-Ereignis auftritt (d. H. Die Browser-Aktion wird angeklickt). Es sieht ungefähr so aus:
content.js
%Vor% Da Sie mit einer Ereignisseite kommunizieren müssen (in Übereinstimmung mit neueren Konventionen ist die Ereignisseite die bevorzugte Wahl über die persistente Hintergrundseite), um Informationen über die aktive Registerkarte zu erhalten (vorausgesetzt, Sie möchten nur die Registerkarten-ID) Sie können diese Informationen abrufen, indem Sie einen Laufzeit-Ereignis-Listener hinzufügen und den Parameter sender
überprüfen. Es sieht ungefähr so aus:
event.js
%Vor%Da wir diese Informationen jedoch an das Inhaltsskript zurückgeben müssen, müssen wir zurückgehen und einen Callback-Handler zu chrome.runtime.sendMessage . Es sieht jetzt ungefähr so aus:
content.js
%Vor% Mit diesem Setup können Sie nun einfache, einmalige Nachrichten von content.js
an event.js
übergeben, wobei event.js
Informationen an content.js
zurückgibt.
Auch dies ist nur eine aktualisierte Version der akzeptierten Antwort für diejenigen, die ein Beispiel dafür haben möchten, wie der neue Ansatz funktioniert.
& amp; Lt; Tab-ID abrufen & amp; Gt; vollständiges Beispiel ▼
(Wahrheit: klarste vollständige Definitionen: Beispiele haben.)
& amp; Lt; manifest .json
& amp; Gt;:
& amp; Lt; bg .js
& amp; Gt;:
& amp; Lt; content .js
& amp; Gt;:
Erweiterung neu laden, Tab gehen, Seite aktualisieren, warten, prüfen & amp; Lt; content .js
& amp; Gt; oks, warte, check cb oks, warte, check & amp; Lt; console.log & amp; Gt; oks, zB:
Überprüfen Sie ▼
Vollständiger Patch -:
& amp; Lt; bg .js
& amp; Gt;:
& amp; Lt; content .js
& amp; Gt;:
Tags und Links google-chrome-extension