Chrome Erweiterung Hintergrundseite HTML funktioniert nicht

7

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.

    
ZenBalance 12.08.2012, 07:30
quelle

4 Antworten

17

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>

in eine HTML-Datei eingefügt werden kann

Nach meinem Verständnis haben Sie vier häufig verwendete Komponenten für eine Basiserweiterung:

  1. DOM des angezeigten Tabs, auf den nur von content_scripts

  2. zugegriffen werden kann
  3. 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.

  4. 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.

  5. {"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

  6. angefordert werden

Ihr Hintergrund ist entweder als ein oder mehrere scripts definiert:

%Vor%

Oder als page :

%Vor%

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.

    
Dylan Valade 21.10.2013 05:50
quelle
2

Sie haben einen Tippfehler in Ihrer Manifestdatei. Das Einfügen einer Hintergrundseite sollte wie folgt aussehen:

%Vor%     
suhibr 04.04.2013 21:38
quelle
0

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.

    
Jeremy Daniel Gregorio 01.04.2014 03:26
quelle
0

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%     
Aniket Thakur 16.11.2015 05:47
quelle

Tags und Links