2012-12-10 81 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处理很多使用劣质显卡的旧电脑,高速事件触发可能会导致很多明显的问题。这还取决于你的滚动事件实际上在做什么(响应需要多长时间,是否消耗内存以及它释放速度有多快等)。

相关问题