仅使用Javascript访问iframe节点,在iframe内部给定元素节点

时间:2016-08-24 00:20:48

标签: javascript html iframe

说我给了一个HTML元素节点,比如

    <div id = "content"></div>

并且包含在iframe中。它作为一个节点传递给我。我希望能够得到元素所在的iframe节点 - 没有特定的id,我希望能够从元素节点访问它。我试过了

  elNode.window 

  elNode.parent

但显然这让我不明确。我也在当前窗口中传递,但尝试

 curWindow.parent 
只是让我在窗口中传递,所以这无济于事。我真的只想从元素节点获取iframe。如果有人有任何指针,那就非常感激。

1 个答案:

答案 0 :(得分:0)

此问题源于同源策略:浏览器不允许原始脚本检查跨源文档的内容。有关sop https://en.wikipedia.org/wiki/Same-origin_policy的更多详细信息。通常,有以下方法可以解决此问题:

  1. 使用元素从未真正受到同源策略的约束:它将下载并执行任何脚本,无论其来源如何。
  2. 跨文档消息传递,允许来自一个文档的脚本将文本消息传递到另一个文档中的脚本,而不管脚本来源如何。在Window对象上调用postMessage()方法会导致异步传递消息事件(您可以使用onmessage事件处理函数处理它)到该窗口中的文档。
  3. 跨源资源共享https://www.w3.org/TR/cors/:此草案标准使用新的Origin:请求标头和新的Access-Control-Allow-Origin响应标头扩展HTTP。它允许服务器使用标头显式列出可能请求文件或使用通配符的起源,并允许任何站点请求文件。

    1. 要支持此类多域网站,您可以使用Document对象的domain属性。但是,域值必须至少有一个点;您无法将其设置为“com”或任何其他顶级域名。例如ecar.car.com,pcar.car.com。您可以将域名设置为car.com。
  4. 希望这可以给你一种帮助