代码之家  ›  专栏  ›  技术社区  ›  e11s

如何从另一个域读取加载了页面的iframe的DOM?

  •  2
  • e11s  · 技术社区  · 16 年前

    如果没有,可能还有其他方法来读取iframe的内容(考虑的一个问题是创建ActiveX控件,因为这只供公司内部使用,但我更希望它能够与跨浏览器兼容)?

    3 回复  |  直到 16 年前
        1
  •  3
  •   Kornel    16 年前

    不是真的。这对安全性至关重要,否则您可能会打开我的网上银行网站或网络邮件,并将其搞乱。

    你可以 loosen restriction 一点点 document.domain ,但顶级域必须相同。

    my.example.com/proxy?url=otherdomain.com/page
    
        2
  •  1
  •   Luca Tettamanti    16 年前

    理论上 您可以使用标准DOM级别2访问iframe的内容 contentDocument 所有物 几乎 您可能已经发现,出于安全考虑,大多数浏览器拒绝访问外部文档的DOM。 无法访问完整的DOM AFAIK(尽管可能有一些特定于浏览器的调整来禁用相同的域检查);对于跨域XHR,一个流行的技巧是使用URL片段标识符在iframe和主文档之间来回反弹数据(参见。 this link ),您可以使用相同的技术,但:

    • 您无论如何都无法访问完整的文档(您可以读回一些参数,或者您可以尝试对整个文档进行URL编码,但这将非常难看)
        3
  •  0
  •   Luca Tettamanti    16 年前

    postMessage HTML5引入的方法;它已经在最近的浏览器(FF3、IE8和Safari 4)中实现。它允许在浏览器内的任何windows对象之间交换消息。 MDC nice tutorial