Как прокрутить родительскую страницу вверх при щелчке дочерней страницы в iframe? - PullRequest
35 голосов
/ 17 июня 2010

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

Обратите внимание: родительская и дочерняя страницы находятся в разных поддоменах.

Я создал демо, чтобы показать это: http://www.apus.edu/_test/iframe/index.htm

Ответы [ 4 ]

52 голосов
/ 27 июня 2010

Хитрость заключается в добавлении следующего onload="window.parent.parent.scrollTo(0,0)" к iframe, и это должно сделать это!

11 голосов
/ 24 декабря 2013

Используя JavaScript в iframe, обратитесь к родителю и вызовите метод scroll () .

window.parent.scroll(0,0);
9 голосов
/ 06 декабря 2017

Если у вас перекрестное происхождение (у iframe и родительского домена разные домены), тогда просто вызов window.scrollTo (0,0) не сработает.

Одним из решений кросс-происхождения является отправка доверенного сообщения из iframe родительскому элементу.

Код внутри фрейма:

var parent_origin = 'http://your/iframe/domain/here'
parent.postMessage({'task': 'scroll_top'}, parent_origin);

Тогда код в родительском:

function handleMessage(event) {
    var accepted_origin = 'http://your/iframe/domain/here';
    if (event.origin == accepted_origin){
        if (event.data['task'] == 'scroll_top'){
           window.scrollTo(0,0);
        }
        // you can have more tasks
    } else{
        console.error('Unknown origin', event.origin);
    }
}

window.onload = function() {
    window.addEventListener("message", handleMessage, false);
}
4 голосов
/ 30 апреля 2014

На странице Iframe.

window.parent.ScrollToTop(); // Scroll to top function

На странице Parrent:

window.ScrollToTop = function(){
  $('html,body', window.document).animate({
    scrollTop: '0px'
  }, 'fast');
};
...