javascript - propiedad - ¿Por qué mi extensión de Chrome no puede usar HTML5 postMessage para comunicarse con un marco que inyecte?
web worker javascript example (3)
Debe incrustar un iframe en su marco raíz que envía solicitudes a un marco de cliente, que luego envía los comandos al sitio raíz como se muestra en el siguiente ejemplo. Esto se conoce como el truco ''pipe one-way'' .: http://msdn.microsoft.com/en-us/library/bb735305.aspx
Entonces, tengo una página en DomainA y, usando una extensión de Chrome, estoy inyectando un javascript que inserta un iframe que apunta a DomainB.
$("body").append("<iframe id=''someFrame'' src=''http://www.domainB.com'' width=''300'' height=''800''></iframe>");
También inyecté un poco de javascript en DomainA que intenta obtener el contentWindow del iframe. Quiero usar la API postMessage HTML5 en él.
$("body").append("<a class=''myLink''>Post Message</a>");
$(".myLink").click(function(){
var frameElem = document.getElementById("someFrame");
console.log("frameElem: " + frameElem); //succeeds
var contentWin = frameElem.contentWindow;
console.log("contentWin : " + contentWin); //undefined
//can''t do this since contentWin is undefined:
//contentWin.postMessage("data", "*");
});
Sin embargo, la propiedad contentWindow no está definida. ¿Por qué es eso y cómo puedo evitarlo? Si pongo este código de extensión en una página web, funcionará bien por sí mismo.
¡Gracias!
(perdón por el maldito jquery / javascript)
Sé que es un poco tonto responder a mi propia pregunta, pero investigué un poco más y encontré un error en Chromium para el problema: http://code.google.com/p/chromium/issues/detail?id= 20773
Encontré este enlace en el grupo de extensiones de cromo: http://groups.google.com/a/chromium.org/group/chromium-extensions/browse_thread/thread/1d4b68f0971ef190/3446a7e82848351c?lnk=gst&q=contentWindow#3446a7e82848351c
Creo que es por las mismas razones por las que las secuencias de comandos de contenido no pueden acceder al objeto ventana de su página principal. Consulte esta pregunta y tiene un enlace a una solución alternativa.