2012-12-10 115 views
8

John Resig在2011年1月撰寫了一個oft-cited blog post,建議不要將處理程序附加到窗口滾動事件。

取而代之的是,通常人們說掐死你的處理程序,例如:

$(window).scroll(_.throttle(myScrollHandler, 250)); 

我在最近的測試中,UI響應更平滑,當處理器直接連接到滾動事件。限制處理程序會導致明顯的滯後。

有現代瀏覽器解決了這個問題嗎?是否有任何測試或瀏覽器兼容性數據可用?

+0

在大多數瀏覽器中仍然會每秒觸發多次 – charlietfl

+2

'限制處理程序導致可見的滯後「 - 因爲你沒有節流而獲得更多的事件命中。如果您的方式在合理的硬件和合理的現代瀏覽器上運行良好,那麼請盡一切努力。但要尊重那些沒有最先進的瀏覽器或電腦的人。另請參閱http://benalman.com/projects/jquery-throttle-debounce-plugin/ –

+0

您也可以嘗試縮短延遲時間。在250,你的.scroll事件每秒只執行四次。 –

回答

6

油門將事件數量減少到每秒4個。如果不加限制,每秒可能會發生大量事件。每秒4個人眼很容易檢測到(取決於你在做什麼)。

至於你是否還在需要來節流,這真的取決於你的客戶。如果你正在使用IE6處理很多使用劣質顯卡的舊電腦,高速事件觸發可能會導致很多明顯的問題。這還取決於你的滾動事件實際上在做什麼(響應需要多長時間,是否消耗內存以及它釋放速度有多快等)。

相關問題