114 votes

Détecter l'extension Chrome première exécution / mise à jour

Comment une extension peut-elle savoir qu'elle est en cours d'exécution pour la première fois ou qu'elle vient d'être mise à jour, de sorte qu'elle puisse effectuer certaines actions spécifiques? (par exemple, ouvrir une page d'aide ou mettre à jour les paramètres)

193voto

Alvin Wong Points 5803

Dans les versions plus récentes de Chrome (depuis Chrome 22), vous pouvez utiliser l'événement chrome.runtime.onInstalled , qui est beaucoup plus propre.

Exemple:

 // Check whether new version is installed
chrome.runtime.onInstalled.addListener(function(details){
    if(details.reason == "install"){
        console.log("This is a first install!");
    }else if(details.reason == "update"){
        var thisVersion = chrome.runtime.getManifest().version;
        console.log("Updated from " + details.previousVersion + " to " + thisVersion + "!");
    }
});
 

84voto

Mohamed Mansour Points 18019

Si vous voulez vérifier si l'extension a été installée ou mise à jour, vous pouvez faire quelque chose comme ceci:

   function onInstall() {
    console.log("Extension Installed");
  }

  function onUpdate() {
    console.log("Extension Updated");
  }

  function getVersion() {
    var details = chrome.app.getDetails();
    return details.version;
  }

  // Check if the version has changed.
  var currVersion = getVersion();
  var prevVersion = localStorage['version']
  if (currVersion != prevVersion) {
    // Check if we just installed this extension.
    if (typeof prevVersion == 'undefined') {
      onInstall();
    } else {
      onUpdate();
    }
    localStorage['version'] = currVersion;
  }
 

20voto

JVillella Points 68

Heureusement, il existe maintenant des événements (depuis la version Chrome 22, et 25 pour les événements de mise à jour).

Une installation d'événement:

chrome.runtime.onInstalled.addListener(function() {...});

Pour un OnUpdateAvailable événement:

chrome.runtime.onUpdateAvailable.addListener(function() {...});

Un important extrait de OnUpdateAvailable par le développeur docs dit:

Déclenché quand une mise à jour est disponible, mais n'est pas installé immédiatement, car l'application est actuellement en cours d'exécution. Si vous ne faites rien, la mise à jour sera installée la prochaine fois que le fond de page est déchargé, si vous voulez qu'il soit installé plus tôt vous pouvez appeler explicitement chrome.moment de l'exécution.reload().

9voto

Max Shawabkeh Points 19030

Simple. Lorsque l'extension exécute tout d'abord, l' 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-autochtones.

Exemple, dans background.htm:

var first_run = false;
if (!localStorage['ran_before']) {
  first_run = true;
  localStorage['ran_before'] = '1';
}

if (first_run) alert('This is the first run!');

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 en XmlHttpRequesting le manifeste) n'est pas égal à celui qui est stocké dans localStorage, l'extension a été mis à jour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X