Détecter Chrome extension de la première exécution / mise à jour
Comment une extension de savoir qu'il est exécuté pour la première fois, ou a simplement été mis à jour, de sorte que l'extension peut effectuer certaines actions spécifiques? (par exemple, ouvrir une page d'aide ou de paramètres de mise à jour)
- pourquoi vous n'avez pas choisi celui-ci? stackoverflow.com/a/14957674/4548520 c'est une bonne réponse officielle de l'événement pour la première extension installer
- user25 - probablement parce que l'OP n'est jamais revenue 2 jours après cette annonce, et n'a certainement pas voir une nouvelle réponse 3 ans plus tard.
Vous devez vous connecter pour publier un commentaire.
Dans les versions récentes de Chrome (depuis Chrome 22), vous pouvez utiliser le
chrome.moment de l'exécution.onInstalled
événement, qui est beaucoup plus propre.Exemple:
Si vous voulez vérifier si l'extension a été installé ou mis à jour, vous pouvez faire quelque chose comme ceci:
prevVersion == 'undefined'
... il est en train de vérifiertypeof prevVersion == 'undefined'
. Il est beaucoup plus robuste à utilisertypeof
lors de la vérification si une variable n'est pas définie... voir ici pour savoir pourquoi: stackoverflow.com/a/3550319/130691undefined
. Ça fait trop longtemps donc je ne me souviens pas pourquoi j'ai mis que.chrome.storage
paslocalStorage
?Heureusement, il existe maintenant les événements pour cela (depuis la version Chrome 22, et 25 pour les événements de mise à jour).
Une installation d'événement:
Pour un OnUpdateAvailable événement:
Un important extrait de OnUpdateAvailable par le développeur docs dit:
Simple. Lorsque l'extension exécute tout d'abord, la
localStorage
est vide. À la première exécution, vous pouvez écrire un drapeau là pour marquer tous les conséquente s'exécute en tant que non-première.Exemple, dans background.htm:
EDIT: Pour vérifier si l'extension a été mis à jour, de stocker la version au lieu d'un simple drapeau lors de la première exécution, puis lors de l'extension actuelle version (l'obtenir par
XmlHttpRequest
ing le manifeste) n'est pas égal à celui qui est stocké danslocalStorage
, l'extension a été mis à jour.localStorage
est en effet dans sa propre fenêtre distincte et ne sont pas partagées avec d'autres codes et d'extensions sur la page de @huyz mentionné. Pour les extensions, cependant, ce n'est pas le cas.