Warum ist html5 postMessage nicht für mich arbeiten?

Ich mit ein paar Zeilen javascript erstellen ein iframe-element, und dann möchte ich sende ihm eine Nachricht, wie diese:

function loadiframe (callback) {
    var body = document.getElementsByTagName('body')[0];
    var iframe = document.createElement('iframe');
    iframe.id = 'iframe';
    iframe.seamless = 'seamless';
    iframe.src = 'http://localhost:3000/iframe.html';
    body.appendChild(iframe);
    callback();
}

loadiframe(function() {
    cpframe = document.getElementById('iframe').contentWindow;
    cpframe.postMessage('please get this message','http://localhost:3000');
    console.log('posted');
})

Und dann, innerhalb http://localhost:3000/iframe.html (die Quelle des iframe) ist so etwas wie dieses:

<!DOCTYPE html>
<html>
<head>
<title>does not work</title>
<script>
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
  if (event.origin == "http://localhost:3000") {
    document.write(JSON.stringify(event));
    document.write(typeof event);
  }
}
</script>
</head>
<body>
</body>
</html>

Aber es passiert nichts... ich habe sogar versucht nicht, verwenden Sie den Sicherheits-check für die Herkunft, aber auch wie Sie, dass nichts passiert... Wie es nie die Nachricht bekommen...

Bin ich in einer Art async-problem ? Ich habe versucht, um sicherzustellen, dass der iframe geladen wurde, bevor die postMessage ging Weg...

EDIT1: Auch keine Fehler anzeigen auf der Konsole...

EDIT2: ich habe es versucht in Google Chrome 11 und Firefox 4

Vielen Dank im Voraus.

Schreibe einen Kommentar