【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
我有一个页面,其中一些事件侦听器附加到输入框和选择框。 有没有一种方法可以找出哪些事件侦听器正在观察特定的DOM节点以及针对哪个事件?
使用以下事件附加事件:
- 原型的
Event.observe
; - DOM的
addEventListener
; - 作为元素属性
element.onclick
。
#1楼
调试时,如果您只想查看事件,我建议...
- 视觉事件
- Chrome开发人员工具的“ 元素”部分:选择一个元素,然后在右下角查找“事件监听器”(与Firefox类似)
如果要在代码中使用事件,并且正在使用1.8之前的 jQuery,则可以使用:
$(selector).data("events")
得到事件。 从1.8版本开始,不再使用.data(“ events”) (请参阅此bug票据 )。 您可以使用:
$._data(element, "events")
另一个示例:在指向控制台的特定链接上写入所有click事件:
var $myLink = $('a.myClass');
console.log($._data($myLink[0], "events").click);
(有关工作示例,请参见http://jsfiddle.net/HmsQC/ )
不幸的是,除调试外, 不建议使用$ ._ data ,因为它是内部jQuery结构,并且在以后的版本中可能会更改。 不幸的是,我知道没有其他简单的方法可以访问事件。
#2楼
原型1.7.1方式
function get_element_registry(element) {
var cache = Event.cache;
if(element === window) return 0;
if(typeof element._prototypeUID === 'undefined') {
element._prototypeUID = Element.Storage.UID++;
}
var uid = element._prototypeUID;
if(!cache[uid]) cache[uid] = {element: element};
return cache[uid];
}
#3楼
Chrome,Firefox,Vivaldi和Safari在其开发人员工具控制台中支持getEventListeners(domElement)
。
对于大多数调试目的,可以使用它。
以下是使用它的很好参考: https : //developers.google.com/web/tools/chrome-devtools/console/utilities#geteventlisteners
#4楼
如果您拥有Firebug ,则可以使用console.dir(object or array)
在任何JavaScript标量,数组或对象的控制台日志中打印一棵漂亮的树。
尝试:
console.dir(clickEvents);
要么
console.dir(window);
#5楼
Opera 12(不是基于最新的Chrome Webkit引擎的) Dragonfly已经有一段时间了,并且显然显示在DOM结构中。 在我看来,它是出色的调试器,也是我仍然使用基于Opera 12的版本的唯一原因(没有v13,v14版本,而基于v15 Webkit的版本仍然缺少Dragonfly)
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3144854