拡張機能が特定のアクションを実行できるように、拡張機能が初めて実行されていること、または更新されたばかりであることをどのようにして見つけることができますか? (例:ヘルプページを開く、設定を更新する)
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 + "!");
}
});
マニフェストのv3を反映するように回答を更新しました。
Chromiumには、拡張機能のバージョンを取得できるAPIの chrome.runtime セットが追加されました。
現在のバージョンを取得するには:
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;
}
幸いなことに、これには events があります(Chromeバージョン22、および更新イベントには25)から)。
インストール済みイベントの場合:
chrome.runtime.onInstalled.addListener(function() {...});
OnUpdateAvailableイベントの場合:
chrome.runtime.onUpdateAvailable.addListener(function() {...});
開発者ドキュメントのOnUpdateAvailableに関する重要な抜粋は次のとおりです。
更新が利用可能になったときに発生しますが、アプリが現在実行されているためすぐにはインストールされません。何もしなければ、更新プログラムは次にバックグラウンドページがアンロードされるときにインストールされます。より早くインストールする場合は、chrome.runtime.reload()を明示的に呼び出すことができます。
シンプル。拡張機能が最初に実行されたとき、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!');
EDIT:拡張機能が更新されたかどうかを確認するには、最初の実行時に単純なフラグの代わりにバージョンを保存し、次に現在の拡張機能バージョン(XmlHttpRequest
ingマニフェストで取得) localStorage
に保存されているものと等しくない場合、拡張子が更新されました。