2017-02-24 14 views
3

私のChromeの拡張機能を構築する一方で、それは新しいブラウザタブを開いて、そこにこれを貼り付けるために、多くの場合、非常に便利です:デバッグ拡張タブの検出方法は?

chrome-extension://xyzfegpcoexyzlibqrpmoeoodfiocgcn/popup.html 

私はそれが今まで閉じずに私のポップアップUI上で動作することができるよそれを行う場合には、右上の拡張子アイコンをクリックしなくても、ポップアップが閉じてしまうこともありません。

問題があります:このデバッグタブにあるかどうか、または「通常モード」(拡張機能アイコンをクリックして通常通りに実行中)で実行されているかどうかを知るためにjs(popup.htmlによって参照される)が必要です。私が最初にこれを試してみました:それは常にtrueに評価されるために動作しません

var isDebugExtensionTab = (location.href.indexOf("chrome-extension:") == 0); 

- それは、すべてのケースでlocation.href、デバッグタブまたは通常モードです。

どのように違いを検出できますか?

答えて

2

使用chrome.tabs.getCurrent

は、このスクリプトの呼び出しから行われていることを、タブを取得します。非タブコンテキスト(例えば、バックグラウンドページやポップアップビューなど)から呼び出された場合、未定義になることがあります。

var isDebugExtensionTab = false; 
chrome.tabs.getCurrent(function(tab) { isDebugExtensionTab = !!tab; }); 

それはすべてのクロムなどの非同期だ。結果は現在のコンテキストが終了するまで使用できなくなりますので、コールバックを受け取ることができる* APIメソッド。値をすぐに使用する必要がある場合は、コールバックで行う必要があります。

var isDebugExtensionTab = false; 
chrome.tabs.getCurrent(function(tab) { 
    isDebugExtensionTab = !!tab; 
    runSomeDebugFunction(); 
}); 
+0

wOxxOmは、タブがnullかどうかを確認するまで機能しません。私はこれをしなかったらそれは素晴らしい仕事: 'chrome.tabs.getCurrent(機能(タブ){ \t \t(タブ){ \t \t \t isDebugExtensionTab = trueの場合、 \t \t} \t});' - してくださいあなたの答えを更新し、私はそれを受け入れるでしょう。 – HerrimanCoder

+0

誰かがコメントに本当のブロックコードを入れる方法を教えてください。出来ますか? – HerrimanCoder

+0

ありがとうございます。私のChromeでは、コールバックはすべてのケースで呼び出され、そのnullチェックなしで不正な結果が得られます。私はあなたの答えを受け入れるでしょう。 – HerrimanCoder

関連する問題