2010-09-27 81 views
21

我有一个带有反馈表单的iFrame。用户点击提交后,我想使用父窗口滚动到顶部。我知道我可以滚动到页面的顶部:jQuery滚动到iframe父项的顶部

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

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

回答

29

给这一个尝试:

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

这似乎已经做到了!谢谢:) – iltdev 2010-09-27 16:01:42

+1

我知道这个问题在一年前已经回答了,但是当我尝试这个时,我得到了下面的错误:'TypeError:属性'$'的对象[对象DOMWindow]不是一个函数。在Google Chrome浏览器中,我可以看到'window.parent'上定义的'$'函数,但是当我钻进它时,它说它是未定义的。有没有理由解释为什么这个答案可能不再有效? – sellmeadog 2011-08-26 00:01:16

+19

你不需要jQuery,如果你不关心动画,使用window.parent.window.scrollTo(0,0);由于安全原因,它们必须位于同一个域中。 – devXen 2011-10-04 23:55:34

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);这非常有帮助。寻找天。谢谢 – 2012-09-20 05:34:41

+5

这个答案缺少很多解释...这是Facebook的应用程序特定。但我试图为iFrame(canvas)Facebook应用程序解决这个问题,所以'FB.Canvas.scrollTo(0,0);'就是我所需要的。 – thaddeusmt 2013-05-26 00:01:01

9

这似乎这样的伎俩还有:

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

second parameter$在搜索范围内。

1

在Iframe页面中。

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

论parrent页:

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

它是否可以跨域使用? – Nubian 2017-10-06 08:31:54

1

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

在iframe的html页面

它的身体,你可以做这么简单!