6

最上位フレームまたは特定のタブのすべてのフレームでスクリプトを実行する方法しかわかりません。

chrome.tabs.executeScript(integer tabId, object details, function callback)

の場合details.allFramestrue各サブフレームで実行されますが、false の場合は最上位フレームでのみ実行されます。frameIdでスクリプトを実行するにはどうすればよいですか?

4

4 に答える 4

5

私の知る限り、あなたはできません。代わりにallFrames: true、コンテンツスクリプトにjavascriptを設定して記述し、それが正しいフレームであるかどうかを検出し、正しいフレームでない場合は何もせずに戻ります。

于 2012-06-27T03:05:19.547 に答える
2

これは、この同じ問題を解決するために行ったルートです。

https://github.com/Rob--W/chrome-api/blob/master/chrome.tabs.executeScriptInFrame/chrome.tabs.executeScriptInFrame.js

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);
});

}

于 2014-01-14T06:03:41.897 に答える
2

ドキュメントから

allFrames が true の場合、現在のページのすべてのフレームに JavaScript または CSS を挿入する必要があることを意味します。デフォルトでは false で、トップ フレームにのみ挿入されます。true で frameId が設定されている場合、選択したフレームとそのすべての子フレームにコードが挿入されます。

于 2017-04-09T08:10:32.420 に答える