執行腳本,我只能看到如何在頂層框架或在某個標籤的所有幀執行腳本:在特定幀
chrome.tabs.executeScript(integer tabId, object details, function callback)
在哪裏,如果details.allFrames
是true
那麼它會在每個被執行子幀,但是如果它是假的,它將只在頂層幀中執行。我如何提供frameId
來執行腳本?
執行腳本,我只能看到如何在頂層框架或在某個標籤的所有幀執行腳本:在特定幀
chrome.tabs.executeScript(integer tabId, object details, function callback)
在哪裏,如果details.allFrames
是true
那麼它會在每個被執行子幀,但是如果它是假的,它將只在頂層幀中執行。我如何提供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爲真,意味着JavaScript,或者CSS應該被注入到當前頁面的所有框架中。默認情況下,它是錯誤的,只被注入頂部框架。如果設置了true和frameId,則該代碼將插入到所選框架及其所有子框架中。
我想這將不得不......唉。有關檢測執行什麼框架的任何提示? – Daniel
你可以在內容腳本中獲得文檔URL,並檢查它是否是你想要的腳本 – Siddhi
這只是一切似乎都是錯誤的 - 爲什麼你不能指定一個'frameId'?好吧,我會停止抱怨。 – Daniel