chrome.- Erweiterung.getBackgroundPage() Funktion Beispiel
Arbeite ich an einer kleinen Chrome-Erweiterung, die muss im hintergrund laufen. Ich verstehe allerdings, dass dies nicht möglich ist, wenn ich mit einem popup. Nach einigem Lesen scheint es, dass die beste option ist die Erstellung popup.js
um ausführen die background.js
mit chrome.extension.getBackgroundPage()
Funktion.
Kann jemand bitte zeigen Sie mir ein Beispiel, wie es gemacht wird?
hier ist das manifest:
"browser_action": {
"permissions": ["background"],
"default_popup": "popup.html"},
"options_page": "options.html",
"background": {
"scripts": ["background.js"],
"persistent" : true
}
Ich habe den popup.js Referenz in popup.html
:
<script src="popup.js"></script>
Erstellt und eine variable in popup.js
var bkg = chrome.runtime.getBackgroundPage();
so, jetzt brauche ich eine Möglichkeit zum aktivieren der background.js
Brauche ich zum ausführen der jeweiligen Funktion innerhalb background.js
aus popup.js
,
oder geben Sie eine Allgemeine Befehl für die background.js
zu laufen?
"persistent": false
in Ihrem manifest.json
. Ansonsten siehe die Antwort von @PawelmhmInformationsquelleAutor Nim | 2014-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie müssen rufen Sie die Funktion aus dem hintergrund im popup. Hier ist ein einfaches Beispiel, das veranschaulicht, wie es funktioniert.
background.js
popup.js
Wenn Sie überprüfen Sie Ihre popup.js Sie werden sehen, "Hallo aus dem hintergrund!" in der Konsole. GetBackgroundPage() gibt einfach window-Objekt für Ihr hintergrund-Seite, wie Sie wahrscheinlich wissen, alle Variablen sind im Anhang zu dieser window-Objekt so auf diese Weise erhalten Sie Zugriff auf definierte Funktion in hintergrund-Skripten.
Gibt es eine Beispiel-code dies demonstrieren in chrome, Dokumentation sehen Im Leerlauf Einfaches Beispiel und auf Datei suchen history.js
Es ist diffecult für jemanden zu erraten, was Sie vielleicht falsch mit Ihrem code, wenn Sie es nicht sehen.
InformationsquelleAutor Pawel Miech
Den hintergrund der Seite geladen wird, dann werden Sie-Erweiterung in Chrome geladen.
Betrachten Sie die popup-Seite wie eine normale web-Seite: hier müssen Sie chrome.Laufzeit Anfragen stellen, um den hintergrund der Seite.
In der Regel, ich mache es mit einer impliziten (temporal) oder explizite (permanent) - Kanal. Mit den zeitlichen Kanal:
popup.js
background.js
Mit permanenten Kanal:
popup.js
background.js
UPD. Während diese Art der content-backgrounf Kommunikation ist voll funktionsfähig, die aktuellen Spezifikationen Beratung mit
chrome.runtime.getBackgroundPage()
eine Funktion aufgerufen wird, im hintergrund script die Anfragen sollten nicht asynchron (damit weniger Codierung benötigt wird, und einfacher, den code zu Lesen). Sehen das Handbuch und andere Antworten zu diesem Beitrag zur Klärung dieser Angelegenheit.chrome.runtime.getBackgroundPage()
ist der bevorzugte Weg, sollte nicht verwendet werden nur mit event-Seiten. Es funktioniert genauso gut mit persistent hintergrund-Seiten, es kann also immer verwendet werden, unabhängig von der Art der hintergrund-Seite.chrome.extension.getBackgroundPage()
auf der anderen hand kann nicht verwendet werden, auf event-Seiten. (Ich sage nicht, Sie meinte sonst, nur darum, ein wenig mehr Gewicht auf es.)Vielen Dank für die Klarstellung dieser Angelegenheit. Ich habe geändert meine Antwort so, dass es nicht enthalten die irreführenden Aussagen mehr.
Der Vorteil
chrome.extension.getBackgroundPage()
überchrome.runtime.getBackgroundPage
ist, dass der erste synchron ist. Die Kodierung in einem synchronen Weg führt zunächst zum klarer-zu-verstehen von code. Allerdings synchronous code kann in der Regel nicht gemacht werden asynchrone wieder ohne Bemühungen, so, wenn Sie in der Entwicklung einer neuen Erweiterung, verwenden Siechrome.runtime.getBackgroundPage(callback)
.Deine Antwort zeigt
chrome.runtime.connect
, aber keine entsprechendechrome.runtime.onConnect
Ereignis. So, die Nachricht verloren.Von "Vorteil" meinst du den "Nachteil" ? 😀 (zumindest sollte es sein, "Unterschied" (imo), obwohl ich stark das Gefühl, dass asynchrone Vorteil ist.)
InformationsquelleAutor lexasss