Wenn sich das Ziel des iFrames und das enthaltende Dokument in einer anderen Domäne befinden, funktionieren die zuvor beschriebenen Methoden möglicherweise nicht, aber es gibt eine Lösung:
Wenn Dokument A beispielsweise ein iframe-Element enthält, das Dokument B enthält, und ein Skript in Dokument A postMessage() für das Window-Objekt von Dokument B aufruft, wird ein Nachrichtenereignis für dieses Objekt ausgelöst, das als vom Window-Objekt von Dokument A stammend gekennzeichnet ist. Das Skript in Dokument A könnte wie folgt aussehen
var o = document.getElementsByTagName('iframe')[0];
o.contentWindow.postMessage('Hello world', 'http://b.example.org/');
Um einen Event-Handler für eingehende Ereignisse zu registrieren, würde das Skript addEventListener() (oder ähnliche Mechanismen) verwenden. Das Skript in Dokument B könnte zum Beispiel so aussehen:
window.addEventListener('message', receiver, false);
function receiver(e) {
if (e.origin == 'http://example.com') {
if (e.data == 'Hello world') {
e.source.postMessage('Hello', e.origin);
} else {
alert(e.data);
}
}
}
Dieses Skript prüft zunächst, ob es sich bei der Domäne um die erwartete Domäne handelt, und prüft dann die Nachricht, die es entweder dem Benutzer anzeigt oder auf die es antwortet, indem es eine Nachricht an das Dokument zurückschickt, das die Nachricht ursprünglich gesendet hat.
über http://dev.w3.org/html5/postmsg/#web-messaging