我一直在研究在iPad Safari上滾動我的網站時出現的一些性能問題。我們有一些頁面,這些頁面最多可以包含500行,大小爲table
;性能影響肯定與表中的行數有關(並且在沒有這種表的頁面上,滾動性能看起來很好)。桌面瀏覽器非常好。將'touchstart'綁定到文檔時,移動Safari(iPad)的滾動性能
你可以在下面的鏈接試試看。 注意:要重現,請確保將默認值25 /頁更改爲500 /頁。 http://www.cellartracker.com/list.asp?table=Notes&iUserOverride=0&T=1000
相當做了一些調試後,我發現,如果我刪除我約束的任何「touchstart」事件,滾動性能是正常的(和超快速,符合市場預期)。我有幾個$(document).on('touchstart', '<selector>', function()...)
事件配置爲協助使觸摸設備可以使用某些懸浮功能。目前,我結合$(document)
的原因有兩個:
- 可以有很多選擇相匹配的元素,所以傳統的單一委託的事件處理程序的性能是連接到每個元素優於500+處理器(我只是在IE8上修正了一些與此相關的性能問題)。
- 某些受影響的元素通過AJAX加載,所以如果綁定到單個元素,那些元素將不會自動獲取處理程序。
OK,偉大的 - 從來就找到了原因 - 但我不知道爲什麼這是一個問題只與大表和如何解決它的網頁。對於具有BOTH觸摸和鍵盤/鼠標的設備,我希望每個輸入機制始終如一(因此if (touch) bind('click') else bind('mouseenter')
方法不是我所期待的)。此外,我還在考慮對某些元素實施Fast Buttons方法,這可能需要綁定到$(document)
,因爲這是相應的click
處理程序當前綁定的地方。
所以...有關如何改善這些頁面上的滾動性能的任何想法,同時仍然綁定touchstart到$(document)
? HTML在這一點上是相當固定的,但如果有簡單的調整到DOM將有很大的影響我打開它。
感謝您分享您的解決方案,使互聯網更加智能的地方! –