如果 iframe 中的文档位于另一个域中,是否有办法从父文档访问 iframe 中文档的 DOM?如果父页面和子页面都在同一个域上,我可以轻松访问它,但是当它们在不同域上时我需要能够做到这一点。
如果不是,也许还有其他方法可以读取 iframe 的内容(一个考虑是创建一个 ActiveX 控件,因为这仅供内部公司使用,但我希望它是跨浏览器兼容的)?
如果 iframe 中的文档位于另一个域中,是否有办法从父文档访问 iframe 中文档的 DOM?如果父页面和子页面都在同一个域上,我可以轻松访问它,但是当它们在不同域上时我需要能够做到这一点。
如果不是,也许还有其他方法可以读取 iframe 的内容(一个考虑是创建一个 ActiveX 控件,因为这仅供内部公司使用,但我希望它是跨浏览器兼容的)?
并不真地。这对安全至关重要——否则你可能会打开我的网上银行网站或网络邮件并搞砸它。
您可以通过设置稍微放宽限制document.domain
,但顶级域仍然必须相同。
您可以通过您自己的服务器代理请求来解决此限制(但不要忘记保护它,否则 s[cp]ammers 可能会滥用它)
my.example.com/proxy?url=otherdomain.com/page
理论上,您可以使用标准 DOM level2 contentDocument属性访问 iframe 的内容。实际上,您可能已经发现大多数浏览器出于安全考虑而拒绝访问外部文档的 DOM。无法访问完整的 DOM AFAIK(尽管可能有一些特定于浏览器的调整来禁用同域检查);对于跨域 XHR,一个流行的技巧是使用 URL 片段标识符(参见例如此链接)在 iframe 和主文档中来回反弹数据,您可以使用相同的技术,但是: