【问题标题】:Can two iframes talk to each other without going through the parent which is in a different domain?两个 iframe 可以在不通过位于不同域中的父级的情况下相互通信吗?
【发布时间】:2014-02-28 01:22:27
【问题描述】:

我有以下几点:

abc.com 上的页面

<html>
     <iframe src="xyz.com/something"/>
     <iframe src="xyz.com/somethingelse"/>
</html>

因此,您可以想象我无法控制的 abc.com 无法真正与 xyz.com 上的 iframe 对话,反之亦然。我控制 xyz.com 上加载为 iframe 的页面之一。有没有办法让我控制的页面在另一个 iframe 上调用函数?

谢谢。

【问题讨论】:

  • 您是否尝试过访问window.parent.frames?不确定该属性是否受 SOP 限制。如果这不起作用,您仍然可以尝试SharedWorker
  • 我没有进行广泛的测试,但似乎每次我尝试访问 window.parent 时都会遇到异常。

标签: javascript iframe same-origin-policy


【解决方案1】:

他们都生活在同一个域中,为什么不中继通过服务器。也许通过套接字也许,这样它就可以活了。 AJAX 投票也可以。

或者,您可以通过localStorage which triggers storage events 中继数据。让他们都监听数据中的修改,相应地解析和显示。不确定这个的兼容性。我上次检查时,只有 Chrome 支持存储事件。

【讨论】:

  • 就像我说的,我只能访问 xyz.com/ 上的一个页面,不能同时访问两个页面。
  • @mntgoat 除非您可以控制其他 iframed 页面,否则您无法与它交谈,除非它允许您这样做。否则,这是一个安全问题。
  • 当然,但是它们都来自同一个域,除了父域来自不同域之外,没有其他理由阻止 iframe 1 在 iframe 2 上调用 javascript 函数。
猜你喜欢
  • 1970-01-01
  • 2013-08-18
  • 2022-06-30
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多