26

.crxファイルからインストールされた拡張機能を実行しているか、「解凍された拡張機能をロード...」ボタンを使用して拡張機能がロードされたかを検出する方法はありますか?

その場合のIDの違いについては知っていますが、コード内のハードコードされた文字列に依存したくありません。

4

3 に答える 3

38

「ファイルからインストール」とは、Chromeウェブストアからインストールしたことを意味する場合、属性の値の.crx拡張子を確認するだけです。拡張機能をアップロードすると、CWSが追加します。manifest.jsonupdate_url

セルフホスト.crxファイルがある場合は、返されたExtensionInfoオブジェクトを使用して拡張情報を取得しchrome.management.getSelf()、確認してください。それが言うなら、それは拡張機能が開発者モードで解凍されてロードされたことを意味します。ファイルからインストールされたことを意味します。installType"development""normal".crx

于 2012-10-11T06:30:56.733 に答える
25

これを行う方法のコードサンプルは次のとおりです。

function isDevMode() {
    return !('update_url' in chrome.runtime.getManifest());
}
于 2013-11-26T21:07:38.517 に答える
4

拡張機能は、マニフェストにフィールドが含まれていない場合、開発者モードで実行されています(つまり、解凍されています) 。update_url

これが機能するのは、解凍された拡張機能のJSONマニフェストファイルにupdate_urlフィールドが含まれていてはならないためです。このフィールドは、Chromeデベロッパーダッシュボードを介して公開するときに自動的に追加されます。

たとえば、開発中にのみ表示されるデバッグログ。

const IS_DEV_MODE = !('update_url' in chrome.runtime.getManifest());

function debugLog(str) {
  if (IS_DEV_MODE) console.log(str);
}

debugLog('This only appears in developer mode');
于 2017-09-17T21:58:51.243 に答える