当用户在iframe中导航时,如何强制iframe的父页面自动滚动到顶部?

时间:2014-09-27 14:45:59

标签: javascript cross-domain

*请注意:跨域方案*

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

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

提前致谢。

2 个答案:

答案 0 :(得分: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中向下滚动然后向上滚动整个文档时,会触发一个事件。

答案 1 :(得分:0)

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

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