如果调用mid-scroll,jQuery滚动到顶部冻结

时间:2017-02-20 12:48:54

标签: javascript jquery html google-chrome

我有一些使用jQuery' scrollTop(0)方法的代码在Chrome上无法正常运行(版本56.0.2924.87)。

我的代码设置了2秒超时,执行以下操作:

  • 滚动到屏幕顶部。
  • 取消隐藏具有100%宽度和高度的div并请求用户完成某些操作。
  • 将一个类附加到设置overflow: hidden
  • 的html标记
  • 一旦用户完成操作,它将删除该类并隐藏div,以便他们可以继续滚动。

这在Firefox上有效。

在Chrome上,如果在用户滚动时执行2秒超时,则按预期工作。但是,如果在用户处于滚动过程中调用2秒超时,则似乎冻结。

我创建了包含所有代码的this Plunker。如果您在内联演示窗口中进行测试,则需要单击“在单独窗口中预览”(代码演示中右上方的蓝色按钮)。

在我的演示中,如果在主动滚动时超时运行会发生这种情况:

enter image description here

如果在我向下滚动(中间滚动)时执行超时,则会发生这种情况: enter image description here

即使用户当前正在页面上滚动,如何才能在Chrome上可靠地工作?

2 个答案:

答案 0 :(得分:1)

为什么在显示时看不到div。在滚动过程中调用事件时,隐藏滚动条和页面顶部的div apper,但您的视口不在顶部位置。如果将div CSS position属性设置为fixed,它将起作用css position。 position属性的固定值是相对于视口的。

所以问题不在你的jquery代码上。

code here

plunker

并检查一下:

  • 滚动到屏幕顶部。

  • 一旦用户完成操作,它将删除该类并隐藏div,以便他们可以继续滚动。

我认为如果他们能够继续担任以前的职位,那将是最好的。

答案 1 :(得分:0)

如果添加stop()怎么办?在.scrollTop(0)之前?

$('html,body,document').stop().scrollTop(0);

我不是专家,但可能值得一试。

希望它有所帮助。