哪些浏览器现在支持window.postMessage调用?

现在支持window.postMessage调用的所有浏览器是什么? 我正在寻找本地支持它的浏览器,而不是通过iFrame黑客。

我可以使用跨文档消息传递吗?

FF3 +,IE8 +,Chrome,Safari(5?),Opera10 +

IE8 +支持postMessage

  • 请记住,IE9及以下版本要求数据以stringforms传递,而不是作为对象传递。
  • IE浏览器不喜欢你加载页面后立即调用postMessage (我假设这与你正在发布的iframe需要时间加载)。
    在调用postMessage之前,使用setTimeout来等待一两秒钟。
    我花了几个小时才弄明白这一点,IE并没有给我任何错误信息,直到我添加了setTimeout,它才静静地无所事事。

如果你想从一个实际在IE中运行的演示开始,请查看Ilya Kantor的这个漂亮的教程

对于最近的价值,我碰到了一些奇怪的webkit浏览器/版本,不支持postMessage。 我使用IE(8)检测作为寻求替代方法。 相反,我可能应该做一些这样的事情:

 if(window.postMessage){ console.log('Supports post message'); } 

或者可能有点清洁:

 var pm_is_supported = typeof(window.postMessage) == 'function';