threads que propiedad mdn los llama importscripts example envían end datos cómo contiene javascript google-chrome google-chrome-extension postmessage

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)



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.