Ich versuche, Chrom-Hintergrundseiten zu verstehen. Ich habe es geschafft, dass background.js Skript nach dem Kannibalisieren auf den Beispielen ausgeführt wird und es erscheint jedes Mal eine Alarmbox, wenn ein Benutzer eine Seite besucht. Wenn ich jedoch das gleiche Skript verwende und es in eine Datei von background.html verschiebe, kann ich die Datei nicht ausführen.
Ich habe die Manifest-Datei auf eine Seite aktualisiert (anstelle eines Skripts) und die Erweiterung wird geladen. Ich habe auch versucht, herum zu spielen entweder mit dem Javascript in einem Skript-Tag direkt im Körper oder in einer Funktion, wie es jetzt ist, dass Onload am Körper oder im Kopf genannt wird.
Vielleicht verstehe ich das Konzept der Verwendung einer background.html-Seite in einer Chrome-Erweiterung nicht?
Manifest-Datei:
%Vor%injectImage.js
%Vor%background.html
%Vor%Derzeit scheint dieser Code nichts anderes zu tun, als ein Symbol in der oberen rechten Ecke zu setzen.
Ihr Hintergrund ist nur eine Seite und verhält sich wie ein lokaler Server , der Daten zwischen den Seiten content_scripts
und default_popup
oder anderen Erweiterungen senden und empfangen kann.
Wenn Sie anfangen, sehen Sie sich die Manifest-Version jedes Beispiels an, die in manifest.json definiert ist. Version 2 hat strengere Sicherheitsrichtlinien und Inline-Javascript ist ungültig, Kopieren von Beispielcode v1 und Einfügen in background.html funktioniert nicht mehr. Alle Skripts müssen sich in einer externen Datei befinden, die mit dem Attribut src
wie <script src="main.js"></script>
Nach meinem Verständnis haben Sie vier häufig verwendete Komponenten für eine Basiserweiterung:
DOM des angezeigten Tabs, auf den nur von content_scripts
content_scripts ist ein Array von JavaScript-Dateien, die in manifest.json angegeben sind und die sequenziell direkt in das DOM des Tabs eingefügt werden. Anscheinend können die JS-Variablen und -Funktionen aus der Registerkarte und Ihren content_scripts nicht interagieren.
Eine Hintergrund-HTML-Seite , die Chrome entweder durch Verketten eines Array mit Skripts generiert ODER ist als eine Seite definiert, die üblicherweise background.html heißt.
{"browser_action" : {"default_popup" : "popup.html"}}
ist eine optionale Benutzerschnittstelle, die in manifest.json definiert ist und angezeigt wird, wenn jemand auf das Erweiterungssymbol klickt. Das Popup hat keine Möglichkeit, das DOM des Tabs zu erreichen. Wenn der Inhalt des Tabs relevant ist, muss er mit Chrome-Nachrichten wie chrome.extension.sendMessage
Ihr Hintergrund ist entweder als ein oder mehrere scripts
definiert:
Oder als page
:
Wenn Sie herausfinden möchten, was im Hintergrund passiert, können Sie console.log verwenden, aber um die Ausgabe zu überprüfen, müssen Sie den Inspektor über die Seite "Erweiterungen" starten. Sie können sogar sehen, dass die Hintergrunddatei immer "_generated_background_page.html" heißt.
Ein mehr Gotcha wird hier nicht erwähnt. Doing <script src="myscript"/>
funktioniert nicht: P, du musst es komplett mit <script src="myscript"></script>
eingeben. Nahm mich ein bisschen, um das herauszufinden.
ODER Sie können js direkt definieren, anstatt eine Hintergrundseite zu definieren und auf eine darin enthaltene Skriptdatei zu verweisen (Inline-Skripts sind gemäß Content Security Policy (CSP) nicht zulässig)
%Vor%Tags und Links google-chrome-extension