2009-01-29 30 views
10

Tengo una página principal y un iframe dentro de esa página. Los enlaces en el padre controlan la página que se carga en el iframe. Lo que quiero hacer es actualizar la página principal cuando se carga el iframe. Tengo esto en el marco flotante:¿Cómo puedo actualizar la ventana padre de un iframe?

RefreshParent(){ 
    parent.location.reload(); 
} 

<body onload="RefreshParent();"> 

embargo, el código anterior refresca toda la página padre junto con el iframe en su interior que a su vez vuelve a cargar la página padre y entra en un bucle infinito.

+0

'parent.location.reload();' no está funcionando para mí. Muestra un error "Permiso denegado" en la consola. ¿Alguna otra idea? –

Respuesta

9

No puede actualizar la página primaria sin volver a cargar el iframe.

Lo que podría hacer es usar AJAX para actualizar el contenido principal, pero eso podría ser una buena cantidad de trabajo (el uso de los frameworks jQuery o Prototype lo haría más fácil).

1

No puede decirle a la ventana primaria que actualice y excluya cualquier parte de su propia página, incluido el marco flotante que contiene. Sin embargo, puedes hacer esto usando técnicas AJAX.

0

Tendrá que hacer que su iframe se convierta en un marco "regular" para preservarlo mientras actualiza otra parte de la página. Como el iframe es, técnicamente, parte del elemento principal (se trata de un marco en línea, después de todo), refrescar el elemento principal también volverá a cargar el contenido del marco flotante.

0

Depende del diseño, pero como otras publicaciones han observado, no se puede actualizar el marco principal sin actualizar el propio iframe, ya que es parte de la página.

Si no desea utilizar ajax, y el diseño lo permite, una solución es colocar el contenido del marco principal en un propio iframe. A continuación, puede indicarle a la página principal que actualice el marco flotante que contiene el 'contenido principal' cuando se cargue su iframe. Si su iframe "primario" no tiene bordes y no hay desplazamiento, esto es completamente transparente para el usuario.

Puede aplicar esta técnica hasta un par de iframes para el contenido primario y puede ser más rápido y más simple de implementar que ajax, más allá de eso es mejor que muerda la bala e implemente una solución ajax.

1

Mientras que su en el mismo dominio que puede usar algo como:

window.parent.location = window.parent.location + '?parent-updated=true' 
Cuestiones relacionadas