javascript中查看元素事件函数的一些技巧
在分析一些网页的时候,经常会发现点击某个按钮会触发某个动作,当页面比较复杂,包含的js文件又多,这时候要找到这段触发函数的代码写在哪里就比较困难。比如,在某个html页面中,发现如下一个按钮,点击后会使得页面元素有变化。但是并未看到onclick事件,那说明该事件可能是通过javascript中的addEventListener方法绑定的(IE不支持该方法,使用的是attachEvent,不理解为微软何非要和W3C标准对着干)。例如下面的代码:
.listener通过jquery的click方法绑定了一个方法,结果发现listenerBody指向到了jquery的代码上去了,如下图:console会把函数的全部都打印出来。
如果该段代码使用jquery绑定的,使用这种方法就会有点问题,比如,还是上面的代码,但是绑定方式如下: $(function () { $("#btn1").click(function () { alert('OK2') }); });
这也正说明了,Jquery对于事件的绑定重新的定义了一套方法,所以此处看到的是Jquery的代码。
幸运的是,在jquery中,我们可以使用jQuery._data(element, "events")方法,关于这个方法的文档很少,官方文档在这里http://blog.jquery.com/2011/11/08/building-a-slimmer-jquery/,提及到该方法时一个内部方法,记录了所有元素的事件。Stackoverflow上有一个文章介绍了这个方法和Jquery.data的区别,地址http://stackoverflow.com/questions/7788353/whats-the-difference-between-jquery-data-and-jquery-data-underscore-data。
此处,我们只需要知道这个方法可以用来实现我们的目的——查看元素所绑定的事件。我们只需在chrome的控制台里输入如下代码:
[code=js;toolbar:false">$._data($("#btn1")[0], 'events');注意,该方法的参数是DOM对象,不是jquery对象。因此需要加一个[0]来转成DOM对象。具体如下图:
[p][url=http://s3.51cto.com/wyfs02/M00/58/76/wKiom1SxJ1GzE68TAAE_VHmyHp0046.jpg]- javascript中查看元素事件函数的一些技巧
- 关于JavaScript中函数的一些技巧
- Javascript 给页面元素添加事件函数探讨
- Javascript为元素添加事件处理函数
- javascript 一个函数对同一元素的多个事件响应
- Javascript 给页面元素添加事件函数探讨
- javascript 一个函数对同一元素的多个事件响应
- 个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
- Javascript调试的小窍门: 如何获取元素上的事件绑定函数?
- 个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
- javascript入门·向函数传递表单数据和元素(赠送一小技巧)
- javascript入门·向函数传递表单数据和元素(赠送一小技巧)
- javascript入门·向函数传递表单数据和元素(赠送一小技巧)
- javascript入门·向函数传递表单数据和元素(赠送一小技巧) .txt
- JavaScript移除绑定在元素上的匿名事件处理函数
- JavaScript移除绑定在元素上的匿名事件处理函数
- Javascript基础——深入了解Javascript(函数返回值return、函数传参arguments、兼容各浏览器的单一行间样式、元素的插入删除split/shift/sort/pop)
- javascript中一些简单事件的处理
- JavaScript之事件处理(监听)函数
- 收集的一些关于JavaScript事件的部分内容