Выполнить скрипт в определенном фрейме
Я вижу только, как выполнить скрипт в кадре верхнего уровня или во всех кадрах на определенной вкладке:
chrome.tabs.executeScript(integer tabId, object details, function callback)
если details.allFrames
is true
тогда он будет выполняться в каждом подкадре, но если он false, он будет выполняться только в кадре верхнего уровня. Как я могу предоставить frameId
выполнить скрипт?
3 ответов
насколько я знаю, вы не можете. Вместо этого, установить 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, то код вставляется в выбранный фрейм и все его дочерние фреймы.