2011-09-21 12 views
5

Tengo un editor con un cargador de imágenes múltiples SWF. Como no todos necesitarán cargar imágenes en su artículo, necesito cargar dinámicamente este cargador de imágenes cuando sea necesario. Tengo que cargarlo en un iframe porque el uploader necesita algunos scripts externos para cargarse antes. Y dado que necesito su variable de devolución de llamada para que lo use mi editor, quiero saber si los scripts en el iframe pueden interactuar con los scripts en la página principal. O si no puedo hacer eso, ¿cuál es la forma alternativa de hacer esto?¿Pueden los guiones en iframe interactuar con guiones en la página principal

Respuesta

4

Si están en el mismo dominio, sí.

El objeto parent es la ventana primaria del iframe.

Si tuviera una variable a en el ámbito global de la ventana padre, usted podría manipularlo en el marco flotante como esto:

parent.a = "new value"; 

mismo modo, si a es una función en el ámbito global de la matriz ventana, se le puede llamar así:

parent.a(args); 
0

Puede scripts en iframe interactuar con las secuencias de comandos en la página principal

Solo si el iframe y su elemento primario tienen exactamente el mismo dominio, debido a same origin policy (MDC link).

4

postMessage en Html5, compatible con Internet Explorer 8.0+, Firefox 3.0+, Safari 4.0+, Chrome 1.0+ y Opera 9.5+, así es como lo he estado usando. Si no le importa la falta de soporte en IE7 y versiones anteriores, aquí le mostramos cómo implementarlo.

Javascript en la ventana principal:

window.addEventListener("message", receiveMessage, false); 

function receiveMessage(event){ 
    var source = event.source.frameElement; //this is the iframe that sent the message 
    var message = event.data; //this is the message 
    //do something with message 
} 

Javascript en el marco flotante;

var message='hello, big window!'; //could be of any type, string, number, array, object, have fun 
window.parent.postMessage(message,'*'); //the '*' has to do with cross-domain messaging. leave it like it is for same-domain messaging. 

Por supuesto que podría hacerlo a la inversa, con el envío de mensajes al marco flotante la ventana principal, y pasar un buen diálogo entre la ventana de esa manera.

0

Si el iframe pertenece a un dominio diferente, pero usted tiene control sobre el contenido, puede comunicarse entre los dos de dos maneras diferentes. Lo más simple es "hablar" a través de pares clave/valor en la URL del iFrame, ya que tanto el padre como el iFrame tienen acceso a eso.

Un enfoque más complicado es utilizar el proxy iFrame, que se describe muy bien aquí: http://www.julienlecomte.net/blog/2007/11/31/ que utiliza Yahoo Pipes para enviar y recibir mensajes bastante bien.

Cuestiones relacionadas