2017-03-06 76 views
0

根据canIuse Safari 9支持跨域postMessage,但当我尝试发送消息到不同的域时,我有关于原点的异常。如何发送Safari浏览器中的跨域邮件?

我有这样的代码:

var input = document.getElementsByTagName('input')[0]; 
// this line throw exception 
var win = document.getElementsByTagName('iframe')[0].contentWindow; 
a.onclick = function() { 
    var obj = {message: input.value}; 
    sysend.broadcast('foo', obj); 
    // proxy to send message to other domains using hidden iframe 
    win.postMessage(JSON.stringify({key: 'foo', data: obj}), "*"); 
}; 

,显示此错误是http://jcubic.pl/sysend.php

回答

0

看来,Safari浏览器抛出异常访问contentWindow第一次时,第二次以后的工作页面:

var iframe = document.getElementsByTagName('iframe')[0]; 
var win; 
try { 
    win = iframe.contentWindow; 
} catch(e) { 
    win = iframe.contentWindow; 
}