IE的所有版本都这样做。所有其他浏览器都能正常工作..
我的代码:
window.addEventListener("message", receiveMessage, false);
传递给:
function receiveMessage(event) {
console.log ( JSON.stringify( event ) ) ;
在IE中,返回为:{}
我postMessage
:
var message = { 'origin' : window.location.origin };
var url = 'https://mywebsite.html';
frames[$(".fancybox-iframe").attr('name')].postMessage(message, url);
同样,这在任何其他浏览器中都可以正常工作。信息完美传递。据我所知,这个使用在IE中正常工作。
答案 0 :(得分:2)
IE未实现window.location.origin
。并且JSON.stringify()
显然忽略了值为undefined
的属性(MDN documentation表示它会这样做。)
在IE中运行此jsFiddle以查看:http://jsfiddle.net/jfriend00/MP68r/
您可以使用window.location
的其他属性来解决此问题,具体取决于您对该信息的确切要求。
您可以将此作为替代方案:
location.href.match(/(^.*?\/\/.*?)[\/$]/)[1].toLowerCase();
这将返回路径中第一个斜杠之前的部分,这基本上就是原点。它被转换为小写,因为域名和协议不区分大小写,因此这可以进行规范比较。