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:
chrome.webstore.install()
, gebunden an onclick
event. 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).
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?
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.
Tags und Links javascript google-chrome google-chrome-extension