有经济日历的页。
场景:
问题是此页面上的必要数据加载了iframe。我在这里读到chrome拒绝使用js-injects进行iframe访问。但我可以通过右键菜单轻松访问必要的表格“inspect element”。是否可以在没有js-injects的情况下访问它?就像自动“检查DOM元素”或内部HTML一样?
我用pyside(python qt webkit接口)解决了这个问题:
def print_content():
res = web.page().mainFrame().childFrames()
for i in res:
s = i.documentElement().toOuterXml()
print(s)
但现在我想从铬(铬)扩展中做到这一点。现代铬(铬)有类似的功能吗? 例如:
chrome.web.page().mainFrame().childFrames() etc...
UPD:
尝试过推荐。更正了清单并添加到内容脚本:
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
var res = document.querySelectorAll("iframe");
var len = res.length;
for (var i = 0; i < len; i++) {
//alert(myStringArray[i]);
console.log(res[i].contentDocument);
//Do something
}
//console.log(res);
获取此错误: (未知)事件处理程序出错:错误:阻止了一个原始“dukascopy.com”的框架;从访问跨源框架。在chrome-extension://bgoddjjeokncninlaacmjamgkohmcecb/content.js:19:23在extend :: messaging:323:11 at Function.target。(匿名函数)(extensions :: SafeBuiltins:19:14)在Event.dispatchToListener(扩展) :: event_bindings:386:22)在event.dispatch_(extensions :: event_bindings:371:27)的event.dispatch(extensions :: event_bindings:392:17)at dispatchOnDisconnect
答案 0 :(得分:0)
您需要将内容脚本注入内部框架才能访问它。这是完全可能的,只是外部文档的脚本无法访问iframe内容。
This question介绍了如何在基于清单的注入的情况下执行此操作。
对于程序化注入,您可以在InjectDetails object all_frames: true
中传递chrome.tabs.executeScript
。