我可以在 UIWebView javascript 注入中访问其他域的其他框架中的 HTML DOM 吗?

Posted

技术标签:

【中文标题】我可以在 UIWebView javascript 注入中访问其他域的其他框架中的 HTML DOM 吗?【英文标题】:Can I access HTML DOM in other frame of other domain in UIWebView javascript injection? 【发布时间】:2011-08-04 08:17:44 【问题描述】:

我正在注入一些 javascript 代码来获取 UIWebView 的内部 DOM 信息。目前,所有代码都很好,但我遇到了一个大问题。其他域的IFRAME 中的文档。通过跨域安全策略,如果框架包含其地址与当前页面不同的文档,我将无法访问 IFRAME 的 DOM。我的UIWebView 必须能够处理互联网上的任何网站。有什么办法可以规避这个安全政策?

【问题讨论】:

【参考方案1】:

UIWebView?没有。

解决这个问题的唯一方法是自己解析 html(我建议一个库 - Element Parser 非常好)。您显然必须寻找 IFRAME 标记并递归加载该内容。

【讨论】:

我必须从客户端处理在运行时使用 JavaScript 动态创建的 HTML 元素。这项工作可以变成重新实现网络浏览器本身...... 无论如何感谢您的回答。我可以停止挖掘 JavaScript 注入。 :)【参考方案2】:

文档中的 iframe 可以在 javascript 变量document.frames 中找到,这是一个包含所有 iframe 的数组。通过这个你可以通过javascript访问iframe的DOM。

使用 javascript,您可以通过发出特殊请求来调用 UIWebViewDelegate 并处理 iframe 内容。

【讨论】:

在 IFRAME 中的 DOM 上的这项工作是否包含不同域的文档? 不,由于安全原因,这是不可能的。对不起,我阅读了跨域部分。如果这可以通过您的应用实现,人们会发现并使用您的应用访问他们的网站,并将其用于跨域脚本。 感谢您阐明安全原因:)

以上是关于我可以在 UIWebView javascript 注入中访问其他域的其他框架中的 HTML DOM 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在uiwebview中处理Javascript onorientationchange事件

使用 JavaScript 将 CSS 注入 UIWebView

我可以在 UIWebView javascript 注入中访问其他域的其他框架中的 HTML DOM 吗?

iOS:在 UIWebview 中使用 javascript 调用 obj-c 方法

将javascript注入uiwebview以调整字体大小

在 UIWebView 的 Safari Web Inspector 中查看 Javascript 源代码