114

拡張機能が特定のアクションを実行できるように、拡張機能が初めて実行されていること、または更新されたばかりであることをどのように確認できますか? (例: ヘルプ ページを開く、設定を更新する)

4

4 に答える 4

192

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 + "!");
    }
});
于 2013-02-19T12:37:02.480 に答える
83

マニフェストのv3を反映するように回答を更新しました:

Chromiumにchrome.runtimeAPIセットが追加され、拡張機能のバージョンを取得できるようになりました。

現在のバージョンを取得するには:

chrome.runtime.getManifest().version

拡張機能が最初にインストールされたとき、拡張機能が新しいバージョンに更新されたとき、およびChromiumが新しいバージョンに更新されたときにリッスンするには、onInstalledイベントを使用できます。

chrome.runtime.onInstalled.addListener((details) => {
   const currentVersion = chrome.runtime.getManifest().version
   const previousVersion = details.previousVersion
   const reason = details.reason
   
   console.log('Previous Version: ${previousVersion }')
   console.log('Current Version: ${currentVersion }')

   switch (reason) {
      case 'install':
         console.log('New User installed the extension.')
         break;
      case 'update':
         console.log('User has updated their extension.')
         break;
      case 'chrome_update':
      case 'shared_module_update':
      default:
         console.log('Other install events within the browser')
         break;
   }

})

それで全部です!


2011年以前の古い答え

拡張機能がインストールまたは更新されているかどうかを確認する場合は、次のようにします。

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;
  }
于 2010-03-08T14:03:57.120 に答える
20

幸いなことに、現在はこれに関するイベントがあります(Chrome バージョン 22 以降、更新イベント用の 25)。

インストールされたイベントの場合:

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

OnUpdateAvailable イベントの場合:

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

開発者ドキュメントからの OnUpdateAvailable に関する重要な抜粋には、次のように書かれています。

更新が利用可能になったときに発生しますが、アプリが現在実行されているため、すぐにはインストールされません。何もしない場合、次回バックグラウンド ページがアンロードされたときに更新がインストールされます。より早くインストールしたい場合は、明示的に chrome.runtime.reload() を呼び出すことができます。

于 2014-08-17T21:19:44.013 に答える
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マニフェストを ing して取得) が に保存されているものと等しくない場合localStorage、拡張機能には更新されました。

于 2010-03-08T07:16:19.583 に答える