Dokumentacja dla postMessage sugeruje, że przesyłanie wiadomości w wielu domenach jest możliwe. Jednakże:Jak mogę zrobić postMessage w wielu domenach?
// When the popup has fully loaded, if not blocked by a popup blocker
To nie jest bardzo jasne, nuta jak faktycznie zrobić.
Wyobraźmy sobie dwie strony:
- [Nadrzędny] hostowane na
qc-a.nfshost.com
- [dziecka] hostowane na
qc-b.quadhome.com
W dominującej:
document.addEventListener('message', function(e) {
alert('Parent got (from ' + e.origin + '): ' + e.data);
e.source.postMessage('Round-tripped!', 'http://qc-b.quadhome.com');
}, false);
function go() {
var w = window.open('http://qc-b.quadhome.com', 'test');
/* This doesn't work because same-origin policy prevents knowing when
the opened window is ready. */
w.postMessage('Vain attempt.', 'http://qc-b.quadhome.com');
}
, aw dziecko:
document.addEventListener('message', function(e) {
alert('Child got (from ' + e.origin + '): ' + e.data);
}, false);
window.opener.postMessage('Ready!', 'http://qc-a.nfshost.com');
Wszystko bez skutku.
Pomoc?
Krótko mówiąc, jestem idiotą. Zastąpiony "dokument" przez 'window' i gotowe wywołanie zwrotne działało przez' window.opener.postMessage'. Dziękuję Ci! –
Zdarza się nam jak najlepiej :) –