2017-02-20 76 views
0

我有一些代碼使用jQuery的scrollTop(0)方法,它在Chrome(版本56.0.2924.87)上無法正常工作。jQuery滾動到頂部凍結,如果調用中間滾動

我的代碼設置其執行以下2秒超時:

  • 滾動到屏幕的頂部。
  • 取消隱藏具有100%寬度和高度的div並請求用戶完成某些操作。
  • 將類添加到設置爲overflow: hidden的html標記中。
  • 一旦用戶完成操作,它將刪除類並隱藏div,以便它們可以繼續滾動。

這是工作可靠的Firefox。

在Chrome上,如果在用戶滾動時執行2秒超時而而不是,則按預期工作。但是,如果在用戶處於滾動中間時調用2秒超時,它似乎會凍結。

我已經創建了包含所有代碼的this Plunker。如果您在內聯演示窗口中進行測試,則不會發生該問題,您需要單擊單獨窗口中的預覽(代碼演示中的藍色按鈕右上角)。

在我的演示,這是什麼情況,如果超時運行,而我積極滾動:

enter image description here

這是如果執行超時會發生什麼,而我向下滾動(中間滾動): enter image description here

即使用戶當前正在頁面上滾動,如何在Chrome上可靠地進行此項工作?

回答

1

爲什麼在顯示時看不到div。當在滾動隱藏的滾動條和頁面頂部的div apper中間調用事件時,但視口不在頂部位置。如果您將div CSS位置屬性設置爲固定,它將起作用,css position。 position屬性的固定值是相對於視口的。

所以這個問題不在你的jQuery代碼上。

code here 

plunker

而且檢查:

  • 滾動到屏幕頂部。

  • 一旦用戶完成操作,它將刪除類並隱藏div,以便它們可以繼續滾動。

我認爲最好的,如果他們能繼續在以前的位置穿。

0

如果你添加stop(),那麼怎麼辦?在.scrollTop(0)之前?

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

我不是專家,但可能值得一試。

希望它有幫助。