2011-05-17 21 views
7

dicen una página HTML (Personal.htm) contiene lo siguiente ...agarre variable global de un iframe incrustado

<script type="text/javascript"> 
    var vara = 'varA'; 
</script> 

Ahora esta página se carga en un iframe desde otra página con ...

<iframe id="child_frame" src="http://mysite.com/Page.htm" /> 

Desde la página principal, me gustaría obtener el valor del 'vara' global de Page.htm.

Ninguna de las siguientes líneas de trabajo ...

window.frames['child_frame'].window.vara; 

    window.frames['child_frame'].window['vara']; 

    window.frames['child_frame'].contentWindow['vara']; 
    // in fact contentWindow returns undefined!! 

Cualquier ayuda sería muy apreciada!

ACTUALIZACIÓN

Después de mirar este problema más, y tratando las diferentes bibliotecas que están disponibles para solucionar este problema, tuve la epifanía que ya que tengo IIS control tanto de los principales e iframe sitios web embebidos, me puede funcionar dentro de las reglas de secuencias de comandos de dominio cruzado utilizando la misma URL base para los diversos sitios web. Además, las bibliotecas que solucionan el problema parecen necesitar actualizaciones constantes a medida que los proveedores de navegadores mejoran su seguridad con actualizaciones continuas. Sería realmente una tarea ardua tener que estar siempre actualizando la solución para eludir lo que el navegador está tratando de evitar.

Respuesta

4

Su primera sintaxis debe trabajar SI estás en la misma doamin.

Si el IFRAME está cargando una página de otro dominio, entonces no podrás acceder a él.

+1

ah, tiene sentido. ¿Puedes ir hacia atrás? ¿Puede el marco flotante secundario ver las variables globales de su elemento primario (dominios diferentes)? –

+1

@John: sería aún peor, ¿no crees? De todos modos, podría estar interesado en [esto] (http://softwareas.com/cross-domain-communication-with-iframes) – neurino

+1

@John Usted puede usar parent. 'parent.myGlobalVarInPageHtm.id' por ejemplo. –

2

Este:

<iframe id="child_frame" src="http://" /> 

debe ser:

<iframe name="child_frame" src="http://" /> 

El iframe atributo "id" debería cambiarse por "nombre".