javascript - targetwindow - postmessage receivemessage
¿Qué navegadores soportan la llamada window.postMessage ahora? (5)
IE8 no permite enviar mensajes a través de ventanas / pestañas
para más información ver aquí
¿Cuáles son todos los navegadores que admiten la llamada window.postMessage
ahora? Estoy buscando navegadores que lo admitan de forma nativa, no a través de un hackeo de iFrame.
Los últimos navegadores son compatibles con, por ejemplo, IE 11, Edge, Firefox 57+, Dafari 11+, iOS Safari 10.2+, Opera mini, Chrome para Android, UC Browser, etc.
https://caniuse.com/#search=document%20messaging
Por lo que vale la pena recientemente, me encontré con algunos navegadores / versiones de webkit impares que no eran compatibles con postMessage. Estaba usando la detección de IE (8) como mi medio para buscar una alternativa. En su lugar, probablemente debería haber hecho algo como esto:
if(window.postMessage){
console.log(''Supports post message'');
}
O probablemente un poco más limpio:
var pm_is_supported = typeof(window.postMessage) == ''function'';
postMessage es compatible con IE8 + SIN EMBARGO
- Recuerde que IE9 e inferior requieren que los datos se pasen en forma de cadena y no como un objeto.
- A IE no le gusta que llame a
postMessage
tan pronto como se cargue la página (supongo que esto tiene que ver con el iframe que está publicando y que necesita tiempo para cargar).
Use unsetTimeout
para esperar uno o dos segundos antes de llamar apostMessage
.
Me tomó horas darme cuenta de esto e IE no me estaba dando ningún mensaje de error, simplemente estaba haciendo nada en silencio hasta que agregué el setTimeout.
Si quieres comenzar con una demostración que realmente funciona en IE, consulta este ingenioso tutorial de Ilya Kantor
¿Puedo usar mensajes de documentos cruzados
FF3 +, IE8 +, Chrome, Safari (5?), Opera10 +