拡張機能が特定のアクションを実行できるように、拡張機能が初めて実行されていること、または更新されたばかりであることをどのように確認できますか? (例: ヘルプ ページを開く、設定を更新する)
4 に答える
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に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;
}
幸いなことに、現在はこれに関するイベントがあります(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!');
編集:拡張機能が更新されたかどうかを確認するには、最初の実行時に単純なフラグの代わりにバージョンを保存します。その後、現在の拡張機能のバージョン (XmlHttpRequest
マニフェストを ing して取得) が に保存されているものと等しくない場合localStorage
、拡張機能には更新されました。