Wie kann ich tun cross-domain-postMessage?

In der Dokumentation für postMessage bedeutet, dass cross-domain-messaging ist möglich. Allerdings:

//When the popup has fully loaded, if not blocked by a popup blocker

Ist das nicht ein sehr deutlicher Hinweis von wie tatsächlich tun.

Stellen Sie sich zwei Webseiten:

  1. [Eltern] gehostet qc-a.nfshost.com
  2. [Kind] gehostet qc-b.quadhome.com

In der parent:

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');
}

Und das Kind:

document.addEventListener('message', function(e) {
  alert('Child got (from ' + e.origin + '): ' + e.data);
}, false);

window.opener.postMessage('Ready!', 'http://qc-a.nfshost.com');

Alles ohne Erfolg.

Helfen?

Schreibe einen Kommentar