Comment une extension peut-elle savoir qu'elle est exécutée pour la première fois ou vient d'être mise à jour, afin que l'extension puisse effectuer certaines actions spécifiques? (par exemple ouvrir une page d'aide ou mettre à jour les paramètres)
98
Réponses:
Dans les nouvelles versions de Chrome (depuis Chrome 22), vous pouvez utiliser l'
chrome.runtime.onInstalled
événement, qui est beaucoup plus propre.Exemple:
la source
Réponse mise à jour pour refléter la v3 du manifeste:
Chromium dispose désormais d'un ensemble d'API chrome.runtime , qui vous permet de récupérer la version de l'extension.
Pour obtenir la version actuelle:
Pour écouter lorsque l'extension a été installée pour la première fois, lorsque l'extension est mise à jour vers une nouvelle version et lorsque Chromium est mis à jour vers une nouvelle version, vous pouvez utiliser l'
onInstalled
événement.C'est tout!
Ancienne réponse, avant 2011
Si vous souhaitez vérifier si l'extension a été installée ou mise à jour, vous pouvez faire quelque chose comme ceci:
la source
prevVersion == 'undefined'
... il vérifietypeof prevVersion == 'undefined'
. Il est beaucoup plus robuste à utilisertypeof
lors de la vérification si une variable n'est pas définie ... voyez ici pour savoir pourquoi: stackoverflow.com/a/3550319/130691Heureusement, il y a maintenant des événements pour cela (depuis la version 22 de Chrome et 25 pour les événements de mise à jour).
Pour un événement installé:
Pour un événement OnUpdateAvailable:
Un extrait important sur OnUpdate Disponible dans la documentation du développeur dit:
la source
Facile. Lorsque l'extension s'exécute pour la première fois, le
localStorage
est vide. Lors de la première exécution, vous pouvez y écrire un indicateur pour marquer toutes les exécutions consécutives comme non premières.Exemple, dans background.htm:
EDIT: Pour vérifier si l'extension vient d'être mise à jour, stockez la version au lieu d'un simple indicateur lors de la première exécution, puis lorsque la version actuelle de l'extension (récupérez-la en
XmlHttpRequest
utilisant le manifeste) ne correspond pas à celle stockée danslocalStorage
, l'extension a été mis à jour.la source
localStorage
trouve en effet dans sa propre fenêtre séparée et n'est pas partagée avec d'autres codes et extensions sur la page, comme @huyz l'a mentionné. Pour les extensions, cependant, ce n'est pas le cas.