2013-07-11 33 views
6

在即將完成的電話應用程序中,我在滾動時動態地將元素插入到dom中。爲此,我使用'touchmove'和'scroll'回調。我目前面臨的問題是,dom只在滾動完成後更新。在做了一些研究之後,我現在認爲原因在於滾動完成後電話不會更新dom。在電話應用程序中滾動時更新dom

有沒有人自己面對過這個問題,並找到了解決方案?

更新

我的測試結果是,JavaScript是沒有更新所有在滾動。我想知道這是爲什麼,而滾動時執行JavaScript和更新dom的好方法是什麼。如果你可以想象另一種方式來更新元素,當視口靠近他們時,這也可以。目前,當用戶停止滾動時,所有內容都會更新,但如果用戶不滾動,則會遇到「空白」頁面空間。

請求滾動檢測代碼

這是我目前用它來檢測滾動。

document.addEventListener("touchmove", callback, false); // This works on android, but on iOS the callback is called when scrolling stops. Usually multiple times, because they stack while scrolling and not being executed. I see the event being executed during touchmove, but when the viewport begins moving, the callbacks pause until after the scrolling ends. 
document.addEventListener("scroll", callback, false); // This is only executed once, and only when scrolling has fully stopped; the viewport is not moving anymore. On android this is executed all the time during scrolling, which is good. 

僅在touchmove期間進行更新以及在滾動停止時的另一次結合就足夠了。用戶滾動速度如此之快(在touchmove之後)以至於他遇到空閒空間的可能性非常小。問題是touchmove事件回調在滾動期間不執行。

+0

現在我確信這是事實。即使我的console.logs只在滾動停止後顯示。 –

+0

你用什麼來檢測滾動?你能告訴我們你的代碼嗎? – caiocpricci2

+0

坐在這裏有同樣的問題,你有解決它嗎? – mattias

回答

2

我建議看看iScroll,它可以給你很多控制用戶滾動。

它可以在用戶滾動到某個點時註冊,然後您可以執行一個函數來加載更多DOM元素,然後立即刷新滾動以繼續用戶體驗更新的元素。

+0

謝謝,我會試試這個。 –

+0

授予代表,因爲這是唯一的答案,它可能是一個解決方案,但我還沒有嘗試過。 –

相關問題