Выполнить скрипт в определенном фрейме

Я вижу только, как выполнить скрипт в кадре верхнего уровня или во всех кадрах на определенной вкладке:

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

если details.allFrames is true тогда он будет выполняться в каждом подкадре, но если он false, он будет выполняться только в кадре верхнего уровня. Как я могу предоставить frameId выполнить скрипт?

3 ответов


насколько я знаю, вы не можете. Вместо этого, установить allFrames: true и напишите javascript в скрипте содержимого, чтобы определить, является ли он правильным кадром, и вернитесь, ничего не делая, если это не правильный кадр.


Это маршрут я пошел, чтобы решить эту же проблему:

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

}


с документация

Если allFrames true, означает, что JavaScript или CSS должны быть введены во все фреймы текущей страницы. По умолчанию это false и вводится только в верхний кадр. Если заданы true и frameId, то код вставляется в выбранный фрейм и все его дочерние фреймы.