2014-09-27 48 views
0

*请注意:跨域场景*如何强制iframe的父页面在用户在iframe中导航时自动滚动到顶部?

我比浏览器窗口,它具有没有滚动条的iframe,但更加高,所以垂直滚动是由浏览器的主要垂直滚动条来完成。然而,这有一个令人不安的特征:当导航在向下滚动状态下完成时,滚动不会重置到父级的顶部。

我想在iframe中发生页面导航时自动将此滚动重置为init top状态。

在此先感谢。

回答

0

您可以将一个onload事件挂钩到iframe。它是跨域场景中可以获得的少数几个钩子之一。

document.getElementById("some_iframe").onload = function(){ window.scrollTo(0,0); } 
+0

不幸的是,我无法访问父页面。它是另一个提供商在其他领域的其他应用程序 – 2014-09-29 14:13:36

+0

啊。我以为你在管理父页面,而不是iframe。 – 2014-09-29 14:30:06

2

如果您的IFRAME有一个跨域问题(指向比你的网站之外的其他地方),你不能:
error : Permission denied to access property 'document'

但如果没有,你可以使用此代码做到这一点。此页面添加到脚本:

var myframe = window.frames[0].window; 
myframe.onscroll = function(){if(myframe.scrollY == myframe.scrollMaxY){window.scrollTo(0,0);}}; 
//Thanks Diodeus! 

或者您也可以通过getElementById或其他同类者选择它,并给予参考myframe变量。当您在iframe中向下滚动,然后向上滚动整个文档时,会触发事件。

相关问题