javascript - 跨域哈希变化通信

标签 javascript html iframe cross-domain hashchange

请考虑以下两个域:domain1.com 和 domain2。

我从 domain1 打开一个指向 domain2 的 iframe。

现在,我希望这些人能够相互交流,我已经通过在两个域上应用哈希更改事件监听器成功地实现了这一点。

这样,如果域 2 使用新哈希调用 parent.location,父窗口 (domain1) 中的哈希将被触发。此外,如果我从父级将其 src 属性更改为新哈希,则哈希更改事件会在 iframe 中触发。

效果很好!

麻烦来了:

浏览器中的后退和前进功能变得困惑。简单地说,通过创建两个哈希实例,浏览器后退按钮必须被点击两次才能让父哈希发生变化,因为它必须首先循环通过 iframe 的哈希。

如何在不搞砸历史对象的情况下与跨域 iframe 进行双向通信?

谢谢!

最佳答案

使用easyXDM ,它是一个 javascript 库,可以为您完成所有繁重的工作,使您能够在所有浏览器(包括 IE6)中进行跨域通信和 RPC。

这不会为当前的任何浏览器(甚至不是 IE6)使用 HashTransport,因此不会更改历史记录。

你不会找到更好的..

您可以在 Script Junkie article 中了解它的一些内部工作原理,或直接转到 readme at github

关于javascript - 跨域哈希变化通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4122422/

相关文章:

javascript - 如何禁用 iframe 中的脚本来控制父级?

javascript:获取关联数组中包含重复数据的键

javascript - 在 Vuetify 中使用 <template> 的目的是什么?

javascript - 通过gapi.signin2.render按钮的Google OAuth未在React应用程序中触发回调

html - 如何制作具有全宽标题和固定宽度正文的响应式网页布局

html - 在 Flash 页面中编辑分辨率

php - 当我有动态表时能够更新 'Button Click' 上的行

javascript - 如何让其他网站可以访问我的 iframe 的 javascript?

javascript - 在 IFrame src 属性中执行内联 JavaScript 代码

javascript - 如何在滚动表标题后面放置一个很棒的字体图标?