How do I Scroll parent page to top when child page

2019-01-17 05:59发布

When someone clicks on a link within an iframe (child page), how do I get the parent page to scroll to the top? The issue is the child page will remain in the same spot of the page, because the iframe has a lot of height larger than the parent page.

Please note: the parent and child pages are on different sub domains.

I created a demo to show this: http://www.apus.edu/_test/iframe/index.htm

4条回答
虎瘦雄心在
2楼-- · 2019-01-17 06:37

Within the Iframe page.

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

On The parrent page:

window.ScrollToTop = function(){
  $('html,body', window.document).animate({
    scrollTop: '0px'
  }, 'fast');
};
查看更多
乱世女痞
3楼-- · 2019-01-17 06:45

The trick is to append the following onload="window.parent.parent.scrollTo(0,0)" to the iframe and that should do it!

查看更多
甜甜的少女心
4楼-- · 2019-01-17 06:45

If you have cross origins (the iframe and the parent have different domains), then just calling window.scrollTo(0,0) won't work.

One solution to cross-origin is to send a trusted message from the iframe to the parent.

Code inside the iframe:

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

Then code in the parent:

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);
}
查看更多
Melony?
5楼-- · 2019-01-17 06:50

Using JavaScript within the iframe, reference the parent and call the scroll() method.

window.parent.scroll(0,0);
查看更多
登录 后发表回答