Wie kann eine Erweiterung feststellen, dass sie zum ersten Mal ausgeführt wird oder gerade aktualisiert wurde, damit die Erweiterung bestimmte Aktionen ausführen kann? (zB eine Hilfeseite öffnen oder Einstellungen aktualisieren)
96
Wie kann eine Erweiterung feststellen, dass sie zum ersten Mal ausgeführt wird oder gerade aktualisiert wurde, damit die Erweiterung bestimmte Aktionen ausführen kann? (zB eine Hilfeseite öffnen oder Einstellungen aktualisieren)
Antworten:
In neueren Versionen von Chrome (seit Chrome 22) können Sie das
chrome.runtime.onInstalled
Ereignis verwenden, das viel sauberer ist.Beispiel:
quelle
Aktualisierte Antwort entsprechend Version 3 des Manifests:
Chromium verfügt jetzt über eine Reihe von APIs für chrome.runtime , mit denen Sie die Version der Erweiterung abrufen können .
So erhalten Sie die aktuelle Version:
Um zuzuhören, wann die Erweiterung zum ersten Mal installiert wurde, wann die Erweiterung auf eine neue Version aktualisiert wurde und wann Chromium auf eine neue Version aktualisiert wurde, können Sie das
onInstalled
Ereignis verwenden.Das ist alles!
Alte Antwort vor 2011
Wenn Sie überprüfen möchten, ob die Erweiterung installiert oder aktualisiert wurde, können Sie Folgendes tun:
quelle
prevVersion == 'undefined'
... er überprüfttypeof prevVersion == 'undefined'
. Es ist viel robuster zu verwenden,typeof
wenn überprüft wird, ob eine Variable undefiniert ist ... siehe hier, um zu erfahren, warum: stackoverflow.com/a/3550319/130691Glücklicherweise gibt es jetzt Ereignisse dafür (seit Chrome Version 22 und 25 für Aktualisierungsereignisse).
Für ein installiertes Ereignis:
Für ein OnUpdateAvailable-Ereignis:
Ein wichtiger Auszug über OnUpdateAvailable aus den Entwicklerdokumenten lautet:
quelle
Einfach. Wenn die Erweiterung zum ersten Mal ausgeführt wird,
localStorage
ist sie leer. Beim ersten Lauf können Sie dort ein Flag schreiben, um alle nachfolgenden Läufe als nicht zuerst zu markieren.Beispiel in background.htm:
BEARBEITEN: Um zu überprüfen, ob die Erweiterung gerade aktualisiert wurde, speichern Sie die Version beim ersten Ausführen anstelle eines einfachen Flags. Wenn die aktuelle Erweiterungsversion (erhalten Sie sie über
XmlHttpRequest
das Manifest) nicht der gespeicherten Version entsprichtlocalStorage
, hat die Erweiterung wurde aktualisiert.quelle
localStorage
Tat in einem eigenen separaten Fenster befinden und nicht mit anderen Codes und Erweiterungen auf der Seite geteilt werden, wie @huyz erwähnt. Bei Erweiterungen ist dies jedoch nicht der Fall.