2017-03-06 43 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; 
}