我可以在 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 吗?