添加到页面的事件处理程序数量直接关系到页面的整体运行性能
1.每个函数都是对象,都会占用内存;内存中的对象越多,性能就越差,设置事件处理函数的时间更长。
2.事先指定所有事件处理程序而导致的Dom访问次数,会延迟整个页面的交互就绪时间。(访问次数越多,代码运行速度越慢)
每当将事件处理程序指定给元素时,运行中的浏览器代码与支持页面交互的js代码之间就会建立一个连接。这种连接越多,页面执行起来就越慢。
内存中那些过时不用的“空事件处理程序”也是造成web应用程序内存与性能问题的主要原因。
如果带有事件处理程序的元素被
innerHTML
删除了,那么原来添加到元素中的事件处理程序极有可能无法被当作垃圾回收。
如果预计元素可能被innerHTML替换,要使用事件委托,因为用innnerHTML删除的元素上的事件处理程序无法当作垃圾回收
缺点:
不是所有的事件都能冒泡的。blur、focus、load和unload不能像其它事件一样冒泡。事实上blur和focus可以用事件捕获而非事件冒泡的方法获得(在IE之外的其它浏览器中)。
在管理鼠标事件的时候有些需要注意的地方。如果你的代码处理mousemove事件的话你遇上性能瓶颈的风险可就大了,因为mousemove事件触发非常频繁。而mouseout则因为其怪异的表现而变得很难用事件代理来管理。
浏览器对”click“点击事件做了300ms的延迟来区分单击和双击事件(如果没有延迟,双击的第一击可能就触发了其它的行为)。