gpt4 book ai didi

javascript - jQuery scrollTop() 为所有元素返回 0

转载 作者:可可西里 更新时间:2023-11-01 02:09:25 25 4
gpt4 key购买 nike

在我的工作中,我们有一个使用 AngularJS 创建的单页网站。
我们正在使用 ui-router 插件(版本 0.2.0)。
最近我注意到,当从一种状态移动到另一种状态时,窗口不会滚动到顶部。
我什至尝试在每次状态更改时使用 jQuery 的 scrollTop() 函数手动将其滚动到顶部(使用 $stateChangeSuccess 事件)。但它没有用。

所以我开始调查,我注意到 scrollTop() 为页面上的每个元素返回 0。
不仅如此,当我将 window.scrollY 打印到控制台时,我得到 0(无论我在页面上的什么位置)。不仅在我的代码中,即使我只是在 chrome 开发工具控制台中编写它。

我已经用 AngularJS 和 ui-router 编写了几个应用程序,但它只发生在这个特定的应用程序中。

我已经检查过是否覆盖了 scrollTop() 函数甚至 window.scrollY 字段,但没有找到任何东西。

我已经尝试将 ui-viewautoscroll="true"autoscroll="false" 一起使用,但它没有没有什么不同。

我也试过给 htmlbody 元素height:100%,我也试过没有。但是什么都没有。

我真的不知道下一步该做什么。

我无法重现该问题,但如果您认为我应该在此处发布任何可能有帮助的代码,我将很乐意这样做。

谢谢!

编辑:

我在控制台上运行了这个函数:

var l = $('*').length;
for(var i = 0; i < l; i++) {
var elem = $('*:eq(' + i + ')');
if(elem.scrollTop() > 0) {
console.log(elem, elem.scrollTop());
}
}

该函数只打印出一个带有顶部滚动条的元素。
该元素是一个包含整个内容和主视图的包装 div(我的应用程序中有嵌套 View )。
如果我在这个元素上使用 scrollTop(0) 我会得到我想要的,但它只处理症状,而不是真正的问题。

最佳答案

正如@Hans 评论的那样,实际上没有问题。我有一个包装元素,它被定位为 absolute :

top:0;
bottom:0;
left:0;
right:0;
overflow:auto

所以窗口的scrollTop一直为0,滚动条其实属于wrapping元素。

由于无法摆脱包装元素的定位,我使用ui-router的$stateChangeSuccess事件,手动将包装元素滚动到顶部。

关于javascript - jQuery scrollTop() 为所有元素返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22173454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com