我在提交表单时试图强制我的页面滚动回到顶部时遇到了相当令人沮丧的时间。
我正在试用的代码很简单:
$('body').prepend('<a href="#" id="testing">Click here</a>');
$('body').on("click", "#testing", function() {
window.top.$('body, html').animate({ scrollTop: 0 }, 0);
});
这可以按预期在FireFox上运行 - 但不适用于Internet Explorer。
值得注意的是,我正在使用UWA小部件格式,而我的代码基本上嵌入在两个iframe 中。 HTML模板和iframe包含此窗口小部件的iframe。 我无法控制这些框架,也无法为您提供完整的代码,因为它实际上是成千上万行可怕的HTML和JavaScript。
以下是我汇总的一些事实,看看是否有人能发现问题,因为我真的不知道从哪里开始寻找:
window.top
更改为window.parent
均不适用于任何浏览器window.top
更改为window.parent.parent
也适用于FF但不适用于IE animate({ scrollTop: 0 }, 0);
更改为scrollTop(0)
在FF中有效,但在IE 如果我在IE中运行以下警报,奇怪(对我而言),这是输出:
alert(typeof window.parent); // object
alert(typeof window.top); // object
alert(typeof window.parent.parent); // object
alert(typeof window.parent.$('html')); // object
alert(typeof window.parent.$('body')); // object
alert(window.parent.offset().top); // alert doesn't trigger, no further alerts run until this line is commented
alert(window.parent.parent.offset().top); // alert doesn't trigger, no further alerts run until this line is commented
alert(window.parent.$('html').offset().top); // 0
alert(window.parent.$('body').offset().top); // 0
alert(window.top.$('html').offset().top); // 0
alert(window.top.$('body').offset().top); // 0
简而言之,看起来window.top
是可访问的,$('html')
元素也可以访问...所以为什么我不能让我的页面滚动,除非我在浏览器中强制使用标准模式?