iframe跨域通信 - 调整大小事件 - 跨浏览器?

时间:2013-10-05 07:51:20

标签: javascript jquery iframe cross-browser cross-domain

当主Window想要向子iframe发送消息时

它将子项的iframe网址设置为当前 url + hash(表示数据)。

  

但iframe将如何获得新数据?

我们有4个选项:(我不是在谈论新的api,例如postMessaage,也不是XDM库)

  • 孩子正在轮询新的哈希值(setTimeout)

  • 主窗口可以调整iframe的大小(iframe必须注册onResize

  • OnHashChange事件可用于iframe

  • 销毁/创建使用“onload”将msg(javascript函数!)通过parent.frames['samedonain'].sendData(...)

  • 发送到“SameDomainIframe”的代理iframe

我的问题出现了:(关于选项#2(调整大小事件)):

根据this文章:

  

在Firefox,Opera,Google Chrome和Safari中,onresize事件是   仅在更改浏览器窗口大小时触发。在互联网上   资源管理器,onresize事件在浏览器大小时触发   窗口或元素已更改。

问题:

这个调整大小的东西有没有任何跨浏览器解决方案?

我不希望用户调整浏览器大小,iframe会重新读取数据!

我想要读取数据只有当我向iframe发送消息并且手动调整大小时

1 个答案:

答案 0 :(得分:2)

您可以使用porthole作为iframe的跨浏览器代理脚本,但您需要能够在另一个iframe的接收端托管一个小代理文件。然后,您可以跨浏览器和域将信息和事件从一个iframe传递到另一个iframe

http://ternarylabs.github.io/porthole/