0

作成中のChrome拡張機能を作成しようとしています(サードパーティサイトの自動記入フォームを意図しています。ですから、executeScriptを使ってJSをこのページに挿入しようとすると、コールバック関数を呼び出すことはありません。Chrome拡張機能でexecuteScriptを使用しないコードインジェクション

function doStepPopup() { 
console.log ("Step "+step+" begins"); 
debugger; 
var tab = curTab; 
chrome.tabs.executeScript (null, { 
    file: "extfiller.js" 
}, function() { 
    debugger; 
    console.log ("Script injected for step "+step); 
......... 
} 
doStepPopup(); 

第二debugger機能とconsole.logと後続のすべてのコードを実行しません:ここでは、コードです。何かご意見は?前もって感謝します!そして、私の英語のため申し訳ありません...デフォルトで

+0

? – Xan

+0

推測:最初の 'debugger'はデバッガウィンドウをアクティブにするので、' null'タブIDを持つexecuteScriptはスクリプトをデバッガウィンドウに注入しようとします。 – wOxxOm

+0

@wOxxOm失敗した場合でも、例外または 'chrome.runtime.lastError'によってエラーを報告する必要があります。 – Xan

答えて

1

chrome.tabs.executeScriptので、それが何らかの理由で「ビジー」状態のままにいくつかの奇妙なページに実行されない場合がありますdocument_idleで注入します。

ソリューション:runAt: 'document_start'との即時実行を強制する:

このコードはあなたの拡張に住んでいる、と `doStepPopup`何呼び出すん
chrome.tabs.executeScript (null, { 
    file: 'extfiller.js', 
    runAt: 'document_start' 
}, function(results) { 
    console.log(results); 
}); 
関連する問題