【发布时间】:2023-03-04 19:01:01
【问题描述】:
请考虑以下两个域:domain1.com 和 domain2。
我从 domain1 打开一个指向 domain2 的 iframe。
现在,我希望这些人能够相互交流,我已经通过在两个域上应用哈希更改事件侦听器成功地实现了这一点。
这样,如果 domain2 使用新哈希调用 parent.location,父窗口 (domain1) 中的哈希将触发。此外,如果我从父级将其 src 属性更改为新的哈希,则会在 iframe 中触发哈希更改事件。
这很好用!
麻烦来了:
浏览器中的后退和前进功能变得混乱。简单地说,通过创建两个哈希实例,浏览器的后退按钮必须点击两次才能更改父哈希,因为它必须先循环遍历 iframe 的哈希。
如何在不破坏历史对象的情况下与跨域 iframe 进行双向通信?
谢谢!
【问题讨论】:
-
我想到的一种可能(丑陋!)的解决方案:我可以在 domain1 上附加一个指向 domain2 的脚本,如下所示:
标签: javascript html iframe cross-domain hashchange