Bueno, tengo un IFrame, que llama a una misma página de dominio. Mi problema es que quiero acceder a cierta información de este Iframe principal desde esta página llamada (desde JavaScript). ¿Cómo puedo acceder a este Iframe?
Detalles: Hay varios Iframes como este, que pueden tener la misma página cargada, porque estoy programando un entorno de Windows. Tengo la intención de cerrar este Iframe, por eso necesito saber cuál debo cerrar desde su interior. Tengo una matriz que mantiene referencias a estos Iframes.
EDITAR: los iframes se generan dinámicamente
javascript
iframe
José Leal
fuente
fuente
Respuestas:
También puede establecer el nombre y la ID en valores iguales
así podrá usar el siguiente código dentro de la página secundaria
fuente
iframe
unidad demasiado pequeña. ¿Pero por qué funciona?window.name
devuelve una cadena ¿Qué tiene de diferente el usowindow.name
que simplemente pasar el nombre de identificación como una cadena que no funciona)?Simplemente llame
window.frameElement
desde su página enmarcada. Si la página no está enmarcada,frameElement
lo estaránull
.La otra forma (obtener el elemento de ventana dentro de un marco es menos trivial) pero por razones de integridad:
fuente
window.frameElement
regresanull
cuando window e iframe tienen dominios diferentes, es decir, mensajes de origen cruzado.Recomendaría usar la API postMessage .
En su iframe, llame a:
En la página que incluye el iframe, puede escuchar eventos como este:
Por cierto, también es posible hacer llamadas a otras ventanas, y no solo iframes.
Lea más sobre la API postMessage en el blog de John Resigs aquí
fuente
<iframe>
contenido no tiene que saber nada sobre los padres y viceversa. Solo tienen que obedecer el simple mensaje del contrato. ¡Increíble!'*'
.'*'
en clientes. Todas las demás soluciones dan un error en un navegador Chrome que trata los archivos en la carpeta de clientes como no del mismo origen porque un servidor no está configurado. Esta es la mejor y única solución: dyn-web.com/tutorials/iframes/postmessageAntigua pregunta, pero acabo de tener este mismo problema y encontré una manera de obtener el iframe. Es simplemente una cuestión de iterar a través de la matriz frames [] de la ventana principal y probar la ventana contentWindow de cada marco contra la ventana en la que se está ejecutando su código. Ejemplo:
O, usando jQuery:
Este método guarda la asignación de una ID a cada iframe, lo cual es bueno en su caso, ya que se crean dinámicamente. No pude encontrar una forma más directa, ya que no puede obtener el elemento iframe usando window.parent: va directamente al elemento de la ventana principal (omitiendo el iframe). Por lo tanto, recorrerlos parece ser la única forma, a menos que desee usar ID.
fuente
puede usar
parent
para acceder a la página principal. Entonces para acceder a una función sería:fuente
Una vez que se establece el id del iframe, puede acceder al iframe desde el documento interno como se muestra a continuación.
Funciona bien en IE, Chrome y FF.
fuente
var iframe = frameElement
Tal vez solo use
en su iframe para obtener el marco de llamada / ventanas. Si tenía un marco de llamada múltiple, puede usar
fuente
Pruebe esto, en su marco principal configure IFRAME como este:
Tenga en cuenta que la identificación de cada fotograma se pasa como un ancla en el src.
luego, en su html interno, puede acceder a la identificación del marco en el que se carga a través de location.hash:
entonces puede acceder a parent.document.getElementById () para acceder a la etiqueta iframe desde dentro del iframe
fuente
fuente