Как я могу обновить родительское окно из iframe? - PullRequest
10 голосов
/ 29 января 2009

У меня есть родительская страница и фрейм внутри этой страницы. Ссылки в родительском элементе управляют страницей, которая загружается в iframe. Что я хочу сделать, так это обновить родительскую страницу при загрузке iframe. У меня есть это в iframe:

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

<body onload="RefreshParent();">

Но приведенный выше код обновляет всю родительскую страницу вместе с iframe внутри, что, в свою очередь, перезагружает родительскую страницу и входит в бесконечный цикл.

Ответы [ 6 ]

9 голосов
/ 29 января 2009

Невозможно обновить родительскую страницу без перезагрузки iframe.

Что вы можете сделать, это использовать AJAX для обновления содержимого родителя, но это может быть довольно трудоемким делом (использование каркасов jQuery или Prototype сделает это проще).

2 голосов
/ 19 июля 2011

Вам также не нужно использовать технику ajax. Вы можете просто вызвать функцию javascript на родительской странице со страницы, содержащейся в iframe родительской страницы. Таким образом, вы можете легко выполнять действия на родительской странице. Как частично обновить родительскую страницу со страницы в iframe, не затрагивая iframe иллюстрирует, как.

Надеюсь, это поможет.

1 голос
/ 28 марта 2014

Пока вы находитесь в одном домене, вы можете использовать что-то вроде:

window.parent.location = window.parent.location + '?parent-updated=true'
1 голос
/ 29 января 2009

Вы не можете сказать родительскому окну обновить и исключить какую-либо часть его собственной страницы, включая содержащуюся в нем iframe. Вы можете сделать это, используя техники AJAX.

0 голосов
/ 29 января 2009

Зависит от того, какой у вас макет, но, как заметили другие посты, вы не можете обновить родительский фрейм, не обновив сам iframe, поскольку он является частью страницы.

Если вы не хотите использовать ajax и разрешения макета, одним из решений является размещение содержимого родительского фрейма в самом iframe. Затем вы можете сказать родительской странице обновить iframe, содержащий «родительский контент», когда ваш iframe загружается. Если ваш «родительский» iframe не имеет границ и прокрутка отсутствует, все это прозрачно для пользователя.

Вы можете использовать эту технику вплоть до пары iframe для родительского содержимого, и это может быть быстрее и проще в реализации, чем ajax, кроме того, вы также можете прикусить пулю и реализовать решение ajax.

0 голосов
/ 29 января 2009

Вам нужно, чтобы ваш iframe стал «обычным» фреймом, чтобы сохранить его при обновлении другой части страницы. Поскольку iframe технически является частью родителя (в конце концов, это встроенный фрейм), обновление родительского элемента также перезагрузит содержимое iframe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...