は、私は私のバックグラウンドスクリプトに次のコードを持っている:Chrome拡張機能:コンテンツスクリプトが既にタブに読み込まれていることを検出するにはどうすればよいですか?
chrome.tabs.onUpdated.addListener(function(tabId, changeinfo, tab) {
if (changeinfo.status !== 'complete')
return;
if (!matchesUrlFilters(tab.url))
return;
chrome.tabs.executeScript(tabId, { file: "jquery-1.7.1.min.js" }, function() {
chrome.tabs.executeScript(tabId, { file: "enhance.js" });
});
});
しかし、これは(enhance.js
がwindow.history.pushState
をしたときにそれが起こるかもしれない)いくつかのケースでは二回、私のコンテンツスクリプトを注入するようです。
タブに既にコンテンツスクリプトがあるかどうかを確認するにはどうすればよいですか? chrome.tabs.sendRequest
を試しましたが、コンテンツスクリプトがまだ追加されていない場合はコールバックを呼び出さなかったことがあります。
スクリプトが2回注入されると、2つの 'enhanced.js'スクリプトは共有変数を持つ1つの実行環境を共有しますか? – abraham
私は分かりません(そして今、おそらく問題を完全に解決する答えによって決してチェックされません)。 –
これは古い質問ですが、私もこの問題に遭遇しました。ロードされたスクリプトのチェックを追加するのではなく、私はmanifest.jsonの "content_scripts"部分からスクリプトを削除しなければなりませんでした。なぜなら、スクリプトの実行を委任して常にロードしたくないからです。 – Andrew