检测Chrome扩展程序首次运行/更新

时间:2010-03-08 05:03:16

标签: google-chrome google-chrome-extension

扩展程序如何发现它是第一次运行或刚刚更新,以便扩展程序可以执行某些特定操作? (例如,打开帮助页面或更新设置)

4 个答案:

答案 0 :(得分:158)

在较新版本的Chrome中(自Chrome 22以来),您可以使用更清晰的chrome.runtime.onInstalled事件。

示例:

// 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 + "!");
    }
});

答案 1 :(得分:65)

如果您想检查扩展程序是否已安装或更新,您可以执行以下操作:

  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;
  }

答案 2 :(得分:18)

幸运的是,现在有events(因为Chrome版本为22,更新事件为25)。

对于已安装的活动:

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

对于OnUpdateAvailable事件:

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

开发人员文档中关于OnUpdateAvailable的重要摘录说:

  

在更新可用时触发,但由于应用当前正在运行,因此未立即安装。如果您不执行任何操作,则下次卸载后台页面时将安装更新,如果您希望尽快安装它,则可以显式调用chrome.runtime.reload()。

答案 3 :(得分:9)

简单。首次运行扩展时,localStorage为空。首次运行时,您可以在那里写一个标记,将所有后续运行标记为非第一个。

示例,在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!');

编辑:要检查扩展程序是否刚刚更新,请在首次运行时存储版本而不是简单标记,然后在当前扩展版本时存储(通过XmlHttpRequest获取清单)与localStorage中存储的清单不相等,扩展名已更新。