2009-01-29 8 views
10

J'ai une page parente et une iframe à l'intérieur de cette page. Les liens dans le parent contrôlent la page qui est chargée dans l'iframe. Ce que je veux faire est d'actualiser la page parent lorsque l'iframe est chargé. J'ai cela dans le iframe:Comment puis-je actualiser une fenêtre parent à partir d'une iframe?

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

<body onload="RefreshParent();"> 

Mais, le code ci-dessus actualise toute la page parent ainsi que l'iframe à l'intérieur qui, à son tour Recharge la page parent et va dans une boucle infinie.

+0

'parent.location.reload();' ne fonctionne pas pour moi. Il affiche une erreur "Autorisation refusée" sur la console. D'autres idées? –

Répondre

9

Vous ne pouvez pas actualiser la page parente sans recharger l'iframe. Ce que vous pouvez faire est d'utiliser AJAX pour mettre à jour le contenu du parent, mais cela pourrait être une bonne quantité de travail (l'utilisation des frameworks jQuery ou Prototype faciliterait cela).

1

Vous ne pouvez pas dire à la fenêtre parent d'actualiser et d'exclure une partie de sa propre page, y compris l'iframe qu'elle contient. Vous pouvez le faire en utilisant les techniques AJAX si.

0

Vous aurez besoin que votre iframe devienne un cadre "normal" afin de le préserver tout en rafraichissant une autre partie de la page. Comme l'iframe fait partie techniquement du parent (après tout, c'est un cadre inline), l'actualisation du parent rechargera aussi le contenu iframe.

0

Dépend de la mise en page, mais comme d'autres publications l'ont remarqué, vous ne pouvez pas actualiser l'image parent sans actualiser l'image elle-même car elle fait partie de la page.

Si vous ne souhaitez pas utiliser ajax, et que la mise en page le permet, une solution consiste à placer le contenu de la trame parent dans un cadre iFrame lui-même. Vous pouvez ensuite demander à la page parent d'actualiser l'iframe contenant le «contenu parent» lorsque votre iframe est chargé. Si votre iframe 'parent' est sans bordure et qu'il n'y a pas de défilement, tout est transparent pour l'utilisateur.

Vous pouvez pousser cette technique jusqu'à deux iframes pour le contenu parent et cela peut être plus rapide et plus simple à implémenter qu'ajax, au-delà de ce que vous avez à faire et à implémenter une solution ajax.

1

Tant que votre sur le même domaine, vous pouvez utiliser quelque chose comme:

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