gpt4 book ai didi

javascript - 使用 iframe 构建的 Access Dom

转载 作者:行者123 更新时间:2023-11-28 08:14:42 25 4
gpt4 key购买 nike

有经济日历页面。

场景:

  1. 我正在浏览器中加载页面。例如:http://www.dukascopy.com/swiss/english/marketwatch/calendars/eccalendar/
  2. 仔细看一下。如果有我感兴趣的数据,我可以单击按钮并保存所有带有加载的 iframe 数据的 html 以供解析。

问题在于该页面上的必要数据是通过 iframe 加载的。我在这里读到 chrome 拒绝使用 js-injects 访问 iframe。但我可以通过右键单击菜单中的“检查元素”轻松访问必要的表。是否可以在没有 js-injects 的情况下访问它?就像自动“检查 DOM 元素”或内部 HTML 一样?

我通过这种方式在 pyside (python qt webkit 接口(interface))中解决了这个问题:

def print_content():
res = web.page().mainFrame().childFrames()
for i in res:
s = i.documentElement().toOuterXml()
print(s)

但现在我想通过 chrome(chromium) 扩展来完成它。现代 Chrome (chromium)有类似的功能吗?例如:

chrome.web.page().mainFrame().childFrames() etc...

更新:

尝试过推荐。更正 list 并添加到内容脚本:

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 在扩展名::messaging:323:11 在 Function.target.(匿名函数) (扩展名::SafeBuiltins:19:14) 在 Event.dispatchToListener (扩展名)::event_bindings:386:22) 在 Event.dispatch_ (extensions::event_bindings:371:27) 在 Event.dispatch (extensions::event_bindings:392:17) 在dispatchOnDisconnect

最佳答案

您需要将内容脚本注入(inject)内部框架才能访问它。这是完全有可能的,只是外部文档的脚本无法访问 iframe 内容。

This question介绍了如何在基于 list 的注入(inject)的情况下执行此操作。

对于编程注入(inject),您可以在 InjectDetails object 中传递 all_frames: true对于chrome.tabs.executeScript

关于javascript - 使用 iframe 构建的 Access Dom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23757731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com