Как обновить родительское окно из iframe?

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

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

<body onload="RefreshParent();">

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

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

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

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