Próbuję sprawić, by trywialny postMessage
przykład zadziałał ...
- w IE10
- między oknami / kartami (w porównaniu z ramkami iframe)
- z różnych źródeł
Usuń jeden z tych warunków i wszystko działa dobrze :-)
Ale o ile wiem, między oknami postMessage
wydaje się działać tylko w IE10, gdy oba okna mają wspólne źródło. (Cóż, w rzeczywistości - i co dziwne - zachowanie jest nieco bardziej pobłażliwe: dwa różne źródła, które współdzielą hosta, też wydają się działać).
Czy to udokumentowany błąd? Jakieś obejścia lub inne porady?
(Uwaga: to pytanie dotyka problemów, ale odpowiedź dotyczy IE8 i IE9 - nie 10)
Więcej szczegółów + przykład ...
Demo strony uruchamiania
<!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>
uruchomiono demo strony
<!DOCTYPE html>
<html>
<script>
window.opener.postMessage("Ahoy!", "*");
</script>
</html>
Działa to pod adresem: http://jsbin.com/ahuzir/1 - ponieważ obie strony są hostowane w tym samym miejscu pochodzenia (jsbin.com). Ale przenieś drugą stronę gdziekolwiek indziej, aw IE10 nie działa.