Wie sende ich eine Nachricht von Content-Skript an inaktives Popup, Chrome-Erweiterung

8

Ich möchte Text auf jeder Webseite protokollieren (mit Inhaltsskript, um die Auswahl zu treffen) in eine Datenbank, die eine Popup-Ressource ist, um Text an einer Stelle zu sammeln.

was ich versuche Ich erstelle eine Datenbank in einer Popup-Seite und versuche, sie über das Inhaltsskript zu verwalten, obwohl das Popup nicht aktiv ist (nicht geöffnet), indem chrome messaging verwendet wird, aber das popup keine Nachricht von content-script erhalten kann.

Ich bin mir nicht sicher, ob ich das Messaging zur Lösung dieses Problems nutzen kann. Gibt es eine bessere Lösung?

    
Jing 14.06.2013, 08:07
quelle

1 Antwort

22

Ein Inhaltsskript kann keine Nachricht an ein unsichtbares Popup senden, da der Kontext des Popups inaktiv (geschlossen) ist, wenn er ausgeblendet ist.

Es gibt mehrere Lösungen für Ihr Problem.

Option 1: Keine Nachrichtenübergabe, Speicherereignisse verwenden

Wenn Ihre "Datenbank" tatsächlich ein einfacher Schlüssel / Wert-Speicher ist, wechseln Sie zu chrome.storage API. Diese API ist für das Inhaltsskript und verfügbar und enthält ein Ereignis, das Sie über Wertänderungen informiert.

Beispiel:

%Vor%

Option 2: Übergeben Sie Nachrichten an die Hintergrund- / Ereignisseite

Das Popup und der Hintergrund / Ereignis Seite teilen den gleichen Prozess. Jede mit dem Popup verknüpfte Datenbank ist auch für die Hintergrundseite verfügbar und umgekehrt. Eine allgemeine Übersicht über diese Methode:

  1. Das Inhaltsskript sendet eine Nachricht an die Hintergrundseite.
  2. Die Hintergrundseite speichert den Wert in der Datenbank
  3. Wenn das Popup geöffnet ist, aktualisieren Sie die Ansicht des Popups.
  4. Wenn das Popup geöffnet wird (also vorher geschlossen wurde) , sollte es die Datenbank lesen (entweder direkt oder durch Lesen von Daten von der Hintergrundseite mit chrome.runtime.getBackgroundPage ) und die Ergebnisse behandeln.

Ich habe den Code für diesen Flow in diese Antwort .

    
Rob W 14.06.2013, 12:48
quelle

Tags und Links