Wenn ich console.log('something');
von der Popup-Seite oder einem darin enthaltenen Skript anrufe, funktioniert es einwandfrei.
Da die Hintergrundseite jedoch nicht direkt von der Popup-Seite ausgeführt wird, ist sie nicht in der Konsole enthalten.
Gibt es eine Möglichkeit, die console.log()
auf der Hintergrundseite angezeigt wird, um sie in der Konsole für die Popup-Seite anzuzeigen?
Gibt es eine Möglichkeit, von der Hintergrundseite aus eine Funktion auf der Popup-Seite aufzurufen?
javascript
google-chrome
google-chrome-extension
Hagelholz
quelle
quelle
Antworten:
Jede Erweiterungsseite (außer Inhaltsskripten ) hat direkten Zugriff auf die Hintergrundseite über
chrome.extension.getBackgroundPage()
.Das bedeutet, dass Sie auf der Popup-Seite einfach Folgendes tun können:
Um die Verwendung zu vereinfachen:
Wenn Sie dasselbe in Inhaltsskripten tun möchten, müssen Sie Message Passing verwenden , um dies zu erreichen. Der Grund, sie gehören beide zu verschiedenen Domänen, die Sinn machen. Auf der Seite " Nachrichtenübermittlung" finden Sie viele Beispiele, die Sie auschecken können.
Hoffe das klärt alles.
quelle
alert()
chrome.extension.getBackgroundPage()
, bekomme ichnull
. Muss ich Berechtigungen oder eine andere Konfiguration haben?Sie können die Konsole der Hintergrundseite öffnen, wenn Sie in der Erweiterungsliste auf den Link "background.html" klicken.
Um auf die Hintergrundseite zuzugreifen, die Ihren Erweiterungen entspricht, öffnen
Settings / Extensions
oder öffnen Sie eine neue Registerkarte und geben Sie einchrome://extensions
. Sie werden so etwas wie diesen Screenshot sehen.Klicken Sie unter Ihrer Erweiterung auf den Link
background page
. Dies öffnet ein neues Fenster. Für das Kontextmenübeispiel hat das Fenster den Titel :_generated_background_page.html
.quelle
Um Ihre Frage direkt zu beantworten, wenn Sie
console.log("something")
aus dem Hintergrund anrufen , wird diese Nachricht in der Konsole der Hintergrundseite protokolliert. Um es anzuzeigen, können Sie unter Ihrer Erweiterung daraufchrome://extensions/
klickeninspect view
.Wenn Sie auf das Popup klicken, wird es in die aktuelle Seite geladen. Daher sollte in der console.log die Protokollmeldung auf der aktuellen Seite angezeigt werden.
quelle
Sie können console.log () weiterhin verwenden, es wird jedoch in einer separaten Konsole angemeldet. Um es anzuzeigen, klicken Sie mit der rechten Maustaste auf das Erweiterungssymbol und wählen Sie "Popup überprüfen".
quelle
Die einfachste Lösung wäre, den folgenden Code oben in die Datei einzufügen. Und dann können Sie alle vollständigen Chrome-Konsolen-APIs wie gewohnt verwenden.
quelle
Protokoll öffnen:
quelle
Versuchen Sie Folgendes, wenn Sie sich bei der Konsole der aktiven Seite anmelden möchten:
quelle
In Bezug auf die ursprüngliche Frage möchte ich der akzeptierten Antwort von Mohamed Mansour hinzufügen, dass es auch eine Möglichkeit gibt, diese Arbeit umgekehrt zu machen:
Sie können mit dem Aufruf über die Hintergrundseite / das Skript auf andere Erweiterungsseiten (z. B. Optionsseite, Popup-Seite) zugreifen
chrome.extension.getViews()
. Wie hier beschrieben .quelle
Es ist ein alter Beitrag mit bereits guten Antworten, aber ich füge meine zwei Bits hinzu. Ich verwende nicht gern console.log, sondern lieber einen Logger, der sich an der Konsole anmeldet, oder wo immer ich will, also habe ich ein Modul, das eine Protokollfunktion wie diese definiert
Wenn ich log aufrufe ("das ist mein Protokoll"), wird die Nachricht sowohl in die Popup-Konsole als auch in die Hintergrundkonsole geschrieben.
Der Vorteil besteht darin, dass Sie das Verhalten der Protokolle ändern können, ohne den Code ändern zu müssen (z. B. Deaktivieren von Protokollen für die Produktion usw.).
quelle
Um ein Konsolenprotokoll von einer Hintergrundseite zu erhalten, müssen Sie das folgende Codefragment in Ihre Hintergrundseite background.js schreiben -
Laden Sie dann die Erweiterung und überprüfen Sie die Hintergrundseite, um das Konsolenprotokoll anzuzeigen.
Gehen Sie geradeaus!!
quelle