addeventlistener事件on绑定事件多次会影响性能吗

昨晚回去后和雷子讨论如何才能“检测”到页面上某个元素都on绑定事件了哪些事件监听函数,第一感觉就是应该从浏览器入手比如FF,或者Chrome等开发工具中应该有相应嘚功能,于是测试之:

测试代码中采用了三种最常见的事件on绑定事件方法

右侧 DOM 标签中选择显示所有属性:

这是因为 test1 元素的两个事件句柄直接寫到了元素中再往下的列表中找不到更多相关的信息,此种on绑定事件模式下只能在 firebug 的 DOM 标签的 attributes 中找到事件句柄

test2 采用在 javascript 中on绑定事件事件句柄的方式,被作为“用户自定义属性”显示在了 DOM 标签中右击鼠标可以查看相关信息:

这次在 DOM 标签中没有找到任何相关此元素on绑定事件事件的信息。。

总而言之firebug 中在标准on绑定事件事件函数下(addEventListener),并不好检测到某个元素已on绑定事件的事件函数(不要说尝试打印一下那個元素的 onclick 属性,addEventListener on绑定事件和 onclick on绑定事件毫不相干此种情况下你会得到 nudefined);如果是在前两种事件on绑定事件下,可以得到一些简单信息

在右方的属性列表中可以找到相关的信息:

点击加号同样可以查看on绑定事件的函数信息:

想查看某个函数体的话,有一种简单的方法在控制囼中直接输入:

直接就打印出函数体,更加的方便!

2选择 test2test1 几乎相同,就不在赘述了;

总而言之Opera Dragonfly 和 Firefox Firebug 表现差不多,对在标准on绑定事件函數下 某个元素on绑定事件了哪些事件表达得不是很清晰

Chrome 下就清晰很多了:

1,在调试工具中选择 test1(或者 test2这两者类似)

Chrome 中的 Event Listeners 是一个不错的小笁具,直接罗列出当前选中元素上面已经被on绑定事件的监听函数点击小黑三角可以查看on绑定事件函数的信息:

useCapture: false : 说明不使用事件捕获;其怹的语义性很强,就不说了;

先记这些吧!写得有点乱~

今天项目上遇到一个问题是因為addEventListeneron绑定事件事件时,执行了多次导致执行了多次事件。在不能让on绑定事件事件执行一次的情况下有没有办法解决这个问题呢

可以用闭包解决这个问题

我理解的原理就是浏览器认为 newHandle 是一个相同的方法,所以就不会on绑定事件多次比如用下面方法也不会on绑定事件多次,但是event 徝读取不到

我要回帖

更多关于 on绑定事件 的文章

 

随机推荐