jQuery滚动到iframe父级顶部

23

我有一个包含反馈表单的iframe。在用户单击提交后,我想使用父窗口滚动到顶部。我知道可以使用以下代码将页面滚动到顶部:

$('html, body').animate({scrollTop:0}, 'slow');

然而,这只会滚动iframe的内容,而不是父页面。有什么建议吗?

5个回答

33

可以尝试这个:

window.parent.$("body").animate({scrollTop:0}, 'slow');

1
我知道这个问题几乎一年前就被回答了,但是当我尝试时,我得到了以下错误:TypeError: Property '$' of object [object DOMWindow] is not a function. 在Google Chrome的JavaScript控制台中,我可以看到在window.parent上定义了一个$函数,但是当我深入研究时,它说它是未定义的。是否有原因导致这个答案可能不再有效? - sellmeadog
21
如果您不需要动画效果,可以使用window.parent.window.scrollTo(0,0),而无需使用jQuery。由于安全原因,它们必须在同一域中。 - devXen

12

以下方法同样可以实现效果:

$('html, body', window.parent.document).animate({scrollTop:0}, 'slow');

$ 的第二个参数是用来指定搜索上下文的。


8
<script>
    jQuery(document).ready(function($) {
        FB.Canvas.scrollTo(0,0);
        FB.Canvas.setSize({width: 760, height:$('body').height()+20});
    });

    function scrollTo(x,y) {
        $("body").append('<iframe id="scrollTop" style="border:none;width:1px;height:1px;position:absolute;top:-10000px;left:-100px;" src="http://static.ak.facebook.com/xd_receiver_v0.4.php?r=1#{%22id%22%3A0%2C%22sc%22%3Anull%2C%22sf%22%3A%22%22%2C%22sr%22%3A2%2C%22h%22%3A%22iframeOuterServer%22%2C%22sid%22%3A%220.957%22%2C%22t%22%3A0}[0%2C%22iframeInnerClient%22%2C%22scrollTo%22%2C{%22x%22%3A'+x+'%2C%22y%22%3A'+y+'}%2Cfalse]" onload="$(\'#scrollTop\').remove();"></iframe>');
    }
</script>

2
FB.Canvas.scrollTo(0,0); 这非常有帮助。搜索了好几天,谢谢。 - Murtaza Khursheed Hussain
5
这个答案缺乏很多解释...它是针对Facebook应用程序的。但我正在尝试解决一个iFrame(画布)Facebook应用程序的问题,所以FB.Canvas.scrollTo(0,0);正是我需要的。 - thaddeusmt

1
在iframe页面内。
window.parent.ScrollToTop(); // Scroll to top function

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

1

<body onLoad="window.parent.scroll(0,0);">

在iframe的html页面中的body标签内

这是非常简单的操作!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接