2017-03-06 4 views
0

Nach canIuse Safari 9 unterstützt Cross-Domain-PostMessage, aber wenn ich versuche, Nachricht an andere Domäne zu senden, habe ich eine Ausnahme über den Ursprung.Wie sende ich eine Cross-Domain-Nachricht in Safari?

Ich habe Code wie folgt aus:

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}), "*"); 
}; 

die Seite, die dieser Fehler ist seit http://jcubic.pl/sysend.php

Antwort

0

Es scheint, dass Ausnahme Safari Wurf, wenn contentWindow ersten Zugriff, es nach dem zweiten Mal arbeiten:

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