附加多个JS点击处理程序会减慢页面的速度吗

Will attaching multiple JS click handlers slow down a page?

本文关键字:速度 程序 JS 处理      更新时间:2023-09-26

我可能有200个点击处理程序,必须附加在一个页面上。(我无法委托它们,因为它们与需要在单个元素上的jQuery插件相关联)

我想知道附加这么多点击处理程序是否会降低性能?

我知道mouseover/scroll处理程序可能会被触发很多次,并且会减慢页面的速度——然而点击处理程序的触发频率较低,但让它们"监听"会减慢页面速度吗?

如果您有200个点击处理程序,每个处理程序都连接到不同的对象,那么唯一会让您慢一点的地方就是连接200个事件处理程序。一旦它们被附加,无论在200个单独的对象上有200个事件处理程序,还是在1个对象上有1个事件处理器,单个单击都不会有什么不同。

如果在同一个对象上有200个单击处理程序,那么在该对象上处理单击时可能会出现速度减慢,因为它必须进行200个函数调用才能执行所有200个事件处理程序。

因此,只要它们都在单独的对象上,唯一的慢操作就是最初附加事件处理程序。一旦连接,就不会对性能产生影响。

没有。

您是对的,mouseover处理程序可能会被大量解雇,但将侦听器连接到事件这一简单事实并不会减慢页面的速度

然而,如果您在一个事件上有200个侦听器(这是非常不可能的),那么当事件被触发时,可能会减慢您的速度。再说一遍,我认为情况并非如此。

当然,事件处理程序并不是完全免费的,但是它们非常便宜。问题是与处理程序相关的事件是怎么做的。通常,元素、动画等的呈现会对浏览器的性能造成更大的损失。

此外,事件侦听器的实现方式也有所不同。例如,请参阅这篇文章