Ich versuche, ein triviales postMessage
Beispiel zum Laufen zu bringen ...
- in IE10
- zwischen Windows / Tabs (vs. Iframes)
- über Ursprünge hinweg
Entfernen Sie eine dieser Bedingungen, und alles funktioniert einwandfrei :-)
Soweit ich das postMessage
beurteilen kann, scheint das Zwischenfenster in IE10 nur zu funktionieren, wenn beide Fenster einen gemeinsamen Ursprung haben. (Tatsächlich - und seltsamerweise - ist das Verhalten etwas freizügiger: Zwei verschiedene Ursprünge, die sich einen Host teilen, scheinen ebenfalls zu funktionieren.)
Ist das ein dokumentierter Fehler? Irgendwelche Problemumgehungen oder andere Ratschläge?
(Hinweis: Diese Frage berührt die Probleme, aber ihre Antwort bezieht sich auf IE8 und IE9 - nicht auf 10)
Weitere Details + Beispiel ...
Demo der Startseite
<!DOCTYPE html>
<html>
<script>
window.addEventListener("message", function(e){
console.log("Received message: ", e);
}, false);
</script>
<button onclick="window.open('http://jsbin.com/ameguj/1');">
Open new window
</button>
</html>
ins Leben gerufen Seite Demo
<!DOCTYPE html>
<html>
<script>
window.opener.postMessage("Ahoy!", "*");
</script>
</html>
Dies funktioniert unter: http://jsbin.com/ahuzir/1 - da beide Seiten am selben Ursprung gehostet werden (jsbin.com). Verschieben Sie die zweite Seite jedoch an eine andere Stelle, und dies schlägt in IE10 fehl.
window.parent.postMessage
im IE verwenden.