La documentación para postMessage implica que es posible enviar mensajes entre dominios. Sin embargo:¿Cómo puedo hacer postMessage entre dominios?
// When the popup has fully loaded, if not blocked by a popup blocker
Eso no es una nota muy clara de cómo a hacerlo realmente.
Imaginemos dos sitios web:
- [padre] alojado en
qc-a.nfshost.com
- [infantil] alojado en
qc-b.quadhome.com
En el padre:
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');
}
Y, en el niño:
document.addEventListener('message', function(e) {
alert('Child got (from ' + e.origin + '): ' + e.data);
}, false);
window.opener.postMessage('Ready!', 'http://qc-a.nfshost.com');
Todo en vano
¿Ayuda?
En resumen, soy un idiota. Se reemplazó 'document' con' window' y la devolución de llamada lista trabajó a través de 'window.opener.postMessage'. ¡Gracias! –
sucede a lo mejor de nosotros :) –