the targetwindow sure sent receivemessage make intended ejemplo domain cross being javascript cross-browser

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

http://blogs.msdn.com/b/ieinternals/archive/2009/09/16/bugs-in-ie8-support-for-html5-postmessage-sessionstorage-and-localstorage.aspx

para más información ver aquí

http://www.openajax.org/member/wiki/Browser_Variation_of_the_Hub_Reference_Implementation_%28Illustrative%29

¿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.



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 un setTimeout para esperar uno o dos segundos antes de llamar a postMessage .
    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