Javascript 通过jQuery访问chrome扩展内容脚本中跨源iframe的HTML?
我正在开发一个chrome扩展,它收集网站上的显示广告,用于一项研究。我试图通过jquery访问广告html,如下所示:Javascript 通过jQuery访问chrome扩展内容脚本中跨源iframe的HTML?,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,我正在开发一个chrome扩展,它收集网站上的显示广告,用于一项研究。我试图通过jquery访问广告html,如下所示: chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){ if(request.todo == "CaptureAds"){ frames = $('iframe') for(var iter=0;iter<frames.length;iter++){
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
if(request.todo == "CaptureAds"){
frames = $('iframe')
for(var iter=0;iter<frames.length;iter++){
console.log('==================IFRAME====================')
console.log('A')
console.log(frames[iter])
console.log('B')
console.log(frames[iter].contentDocument)
console.log('C')
console.log(frames[iter].src)
}
}
}所以-好消息是您的代码中已经有了
“所有帧”:true
。你可能想要
"matches": [
"<all_urls>"
],
iframe应该指向父帧。我不知道您的限制,但我想您可以找出什么是父页面(或者您可能已经知道了?),因此只需在iframe中说pagea加载了pageb。在这一阶段,您的内容脚本位于这两个页面中,因此您可以访问这两个页面。您可以共享扩展清单吗?大体上,解决方案是在每个页面(包括框架中的页面)上加载一个内容脚本。由于内容脚本可以访问其加载到的页面的DOM,因此可以通过与内容脚本交换消息来访问iframe DOM。添加了manifest@Utkanos如何使相同的内容脚本加载到所有帧中?另外,我如何在不同的框架范围内唯一地识别相同的内容脚本?你可以用谷歌搜索如何在所有框架中添加内容脚本-谷歌在这方面有文档。至于如何在不同的上下文中识别相同的内容脚本,这取决于您传递的消息。给每个人一个ID,根据ID的不同,只让内容脚本的某些部分响应。@ammar075-如果绿色勾号符合答案,我将不胜感激。
"matches": [
"<all_urls>"
],
window.document.referrer