So prüfen Sie, ob die Chrome-Erweiterung vollständig installiert wurde

8

Bei der Inline-Installation von Chrome Web Store ( Ссылка ) können Sie einen Rückruf für angeben chrome.webstore.install() , das ausgeführt wird, wenn die Erweiterung erfolgreich installiert wurde.

Durch einige sehr mühsame Debugging habe ich gelernt, dass Erweiterungen nicht unbedingt 100% installiert sind, wenn der Callback ausgeführt wird - vielleicht wurde der Hintergrund nicht geladen oder Inhaltsskripte sind noch nicht verfügbar.

In meinem speziellen Fall stellt sich das Problem auf diese Weise:

  1. Der Benutzer klickt auf die Schaltfläche "Installieren" mit chrome.webstore.install() , gebunden an onclick event.
  2. Der Rückruf für den Erfolg fügt einen iFrame ein.
  3. Das Inhaltsskript ist für den iFrame definiert und wird injiziert, um einige abschließende Arbeiten auszuführen
  4. Das Inhaltsskript wird mit einem abgeschlossenen Installationsdialogfeld zurückgegeben.

Schritt 3 ist das Problem. Manchmal wird der iFrame injiziert, bevor das Inhaltsskript vollständig geladen ist, und somit wird kein Skript injiziert (Inhaltsskripte werden nur in neu erstellte iFrames eingefügt, nicht iFrames sind bereits vorhanden, wenn die Erweiterung installiert / aktiviert ist).

Ich weiß, dass es mögliche Problemumgehungen gibt, wie die Erweiterung selbst den iFrame oder eine einfache setTimeout() zu injizieren, aber um anderen zu helfen, denke ich, dass es sich lohnt, die Frage zu stellen:

Wie kann ich sicher sein, dass die Erweiterung zu 100% installiert ist, wenn der chrome.webstore.install() -Rückruf dies nicht gewährleistet?

Verwenden Sie die berühmte <img> load-Methode, die in Checking if user beschrieben wird hat eine bestimmte Erweiterung installiert funktioniert nicht zuverlässig (für diejenigen, die denken, das wäre eine Lösung).

    
Woodgnome 21.08.2012, 08:55
quelle

2 Antworten

8

So geht es:

Ссылка

Wie im letzten Link unten erwähnt, sollten Sie Folgendes tun können:

%Vor%

Sie können im nächsten Link auch den Abschnitt Prüfen, ob ein Artikel bereits installiert ist überprüfen:

Ссылка

oder Sie können verfolgen, was in diesem Beitrag getan wurde:

Überprüfen Sie, ob der Nutzer eine Chrome-Erweiterung installiert hat

Ich habe auch Lösungen gesehen, die über Hintergrundseiten und lokale Speicher sprechen:

Ссылка

Chrome-Erweiterung nach der Installation von Hook / API-Funktion : Existiert es?

    
Mehdi Karamosly 18.12.2012 22:43
quelle
0

Sie sind sicher, dass die Arbeit Ihres Inhaltsskripts von derselben Seite aus erfolgen muss, auf der der Benutzer die Erweiterung installiert hat? Wenn nicht, rufen Sie einfach Ihre Nebenstelle an chrome.tabs.update oder chrome.tabs.create (zwei der wenigen tabs -Methoden, für die keine Tabulator-Berechtigung erforderlich ist), um eine Seite mit Ihrem Inhalt zu öffnen Skript kann injiziert werden.

Andernfalls kann Ihre Erweiterung programmatic injection verwenden, um ein Inhaltsskript zu injizieren, das kommunizieren mit Ihrer Seite . Sie können chrome.tabs.query verwenden, um sicherzustellen, dass Sie in den richtigen Tab injizieren.

    
Pikadude No. 1 17.12.2012 03:33
quelle