最上位フレームまたは特定のタブのすべてのフレームでスクリプトを実行する方法しかわかりません。
chrome.tabs.executeScript(integer tabId, object details, function callback)
の場合details.allFrames
はtrue
各サブフレームで実行されますが、false の場合は最上位フレームでのみ実行されます。frameId
でスクリプトを実行するにはどうすればよいですか?
最上位フレームまたは特定のタブのすべてのフレームでスクリプトを実行する方法しかわかりません。
chrome.tabs.executeScript(integer tabId, object details, function callback)
の場合details.allFrames
はtrue
各サブフレームで実行されますが、false の場合は最上位フレームでのみ実行されます。frameId
でスクリプトを実行するにはどうすればよいですか?
私の知る限り、あなたはできません。代わりにallFrames: true
、コンテンツスクリプトにjavascriptを設定して記述し、それが正しいフレームであるかどうかを検出し、正しいフレームでない場合は何もせずに戻ります。
これは、この同じ問題を解決するために行ったルートです。
function alertCookie(tabId, frameId) {
chrome.tabs.executeScriptInFrame(tabId, {
frameId: frameId,
code: '// This code runs in one frame, specified via frameId \n' +
'alert(location.href);' +
'document.cookie;'
}, function(results) {
if (!results) {
alert('Failed to execute code. See background page for details.');
return;
}
var cookie = results[0];
alert('Found cookie: ' + cookie);
});
}
ドキュメントから
allFrames が true の場合、現在のページのすべてのフレームに JavaScript または CSS を挿入する必要があることを意味します。デフォルトでは false で、トップ フレームにのみ挿入されます。true で frameId が設定されている場合、選択したフレームとそのすべての子フレームにコードが挿入されます。