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

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

【问题讨论】:

    标签: ios cocoa-touch security uiwebview cross-domain


    【解决方案1】:

    UIWebView?没有。

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

    【讨论】:

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

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

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

    【讨论】:

    • 在 IFRAME 中的 DOM 上的这项工作是否包含不同域的文档?
    • 不,由于安全原因,这是不可能的。对不起,我阅读了跨域部分。如果这可以通过您的应用实现,人们会发现并使用您的应用访问他们的网站,并将其用于跨域脚本。
    • 感谢您阐明安全原因:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2019-02-11
    • 2021-08-07
    相关资源
    最近更新 更多