【问题标题】:HTML5's window.postmessage not working below IE9 IEsHTML5 的 window.postmessage 在 IE9 IE 下不起作用
【发布时间】:2020-01-01 11:13:55
【问题描述】:

我有一个very simple demo 用于使用 html5 的 postMessage API 在 iframe 中进行跨域通信。它在所有现代浏览器和 IE9 中都能成功地为我工作,但在 IE8 或更低版本中却不行。

我尝试了使用自定义标头注册一些 html5 标记的解决方案,但 window.postMessage 对于 IE8 来说仍然很神秘。

是的,我知道我可以在 IE8 中使用各种方式进行跨域,例如 xdr,但是为了清洁,如果 window.postMessage 可以在 IE8 或更低版本中运行,请评论。

【问题讨论】:

  • 请注意,您的页面在 IE 中不会处于标准模式,因为在您的 DOCTYPE 之前插入了一个广告,这将导致一些 HTML5 功能无法工作。
  • 感谢 robertc 的提示,我已经在本地 tomcat 上测试了这个演示,它绝对没有广告,html5 的 window.postMessage 在 IE8 中仍然不起作用。不幸的是,我在服务器上上传了一些广告演示给你们看。

标签: html iframe internet-explorer-8 cross-domain


【解决方案1】:

显然,IE8 不允许 postMessage 跨选项卡/窗口,只允许在 iframe 和父级:reference 之间。低于 IE8 就很不走运了,因为 IE7 于 2006 年发布,而 HTML5 已于 2007 年被 W3C 采纳为工作草案。

【讨论】:

  • 在 ie9 以下有一些针对 cors 的 hack,比如轮询、代理和一些库,比如 easyxdm 和 modernizer,所以我应该添加它们对浏览器的支持
  • CORS 在 IE8 下似乎也不支持。如果 IE9 之前的支持对您很重要,那么您应该使用跨域通信破解。我不认为modernizr 可以帮助你,它主要是特征检测库,而不是替换缺失的特征。
  • 谢谢兰兹。是的,尽管像轮询和代理这样的其他技巧对我有用,但现代化工具并没有提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-11
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多