Chrome拡張機能で同じページに複数回コンテンツスクリプトを挿入する際に問題が発生します。Chrome拡張 - 1ページの読み込みごとに複数回コンテンツスクリプトが挿入される
私はタブの変化に、私の「background.html」ページからコンテンツスクリプトを注入しています:
chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab){
chrome.tabs.getSelected(null,function(tab){
// Do some stuff
chrome.tabs.executeScript(null, { code: code}, function(result){
...コンテンツスクリプト内など
、私はいくつかにconsole.logのコマンドを持っています
問題は、SINGLEページを読み込んだときに、各ログがコンソールに2〜4回表示されていることです。
ページ内のiframeのためにこれが起こっていることは私には明らかです。私は少なくとも...私の質問はなぜですか?
ドキュメントでは、「all_frames」(マニフェストのコンテンツスクリプトのアクセス許可配列)をデフォルトで「false」に設定する必要があります。その結果、コンテンツスクリプトはページの上部フレームにのみ注入されますが、単純に起こっていない!
なぜ何度も注射されていますか?物理的に「all_frames」をfalseに設定する必要がありますか?第二に
:
は、拡張子が「background.html」ページ内からのiframeまたはトップであるために、コンテンツのスクリプトを挿入しようとしている場合はページを指示する方法はありますか?
私は
if(window.top === window){ console.log('whatever'); }
を試してみましたが、それは時間の100%に動作しないことを見出しました。私のコードブロック(chrome.tabs.executeScript()の周り)の残りの部分を条件付きにしても、私はまだ複数回に渡ってコンテンツスクリプトが表示されています....
アイデアや提案は大歓迎です! :)
'tab'オブジェクトにはタブが現在選択されているかどうかを知る' active'というプロパティがあるので、 'chrome.tabs.getSelected()'を使う必要はありません。 – 10basetom