是否仍需要限制$(window).scroll()的速度?

8

2011年1月,John Resig撰写了一篇广为流传的博客文章(链接),建议不要将事件处理程序附加到窗口滚动事件上。

相反,普遍的做法是对处理程序进行节流,例如:

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

在我最近的测试中,当处理程序直接附加到滚动事件时,UI响应会更加流畅。对处理程序进行节流会导致明显的延迟。

现代浏览器是否解决了这个问题? 是否有任何测试或浏览器兼容性数据可用?


在大多数浏览器中,仍然以每秒多次的频率触发。 - charlietfl
2
限制处理程序会导致明显的延迟,因为没有进行节流,事件触发次数更多。如果您的方法在合理的硬件和现代浏览器上运行良好,请放心使用。但请尊重那些没有最先进浏览器或计算机的人。另请参见http://benalman.com/projects/jquery-throttle-debounce-plugin/。 - Robert Harvey
你也可以尝试稍微减少延迟。在250的情况下,.scroll事件每秒只会执行四次。 - Robert Harvey
当然,4 FPS 是可见的延迟。你的滚动处理程序做了什么? - Bergi
1个回答

6
节流器可以将每秒触发的事件数量降低到4个。如果没有进行节流,每秒可能会触发更多的事件。每秒4个事件对人眼来说很容易被察觉(具体取决于你所做的事情)。
至于是否仍需要进行节流,这实际上取决于你的客户端。如果你处理的是许多使用IE6且图形卡较差的旧计算机,则高速事件触发可能会导致许多明显的问题。这还取决于你的滚动事件实际上在做什么(响应时间有多长,它是否消耗内存以及释放内存的速度等)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接