我如何仅使用JavaScript而不使用框架来访问绑定到dom元素的事件

|| 如何使用JavaScript而不是使用库/框架或Firefox附加组件访问绑定到dom元素的事件?只是纯JavaScript。我错误地认为将有一个事件对象存储为具有绑定的元素的属性。 例如,如果我不得不说,单击,dblclick和将鼠标悬停在某个元素上,该如何不使用jQuery进行以下操作。只是JavaScript。
function check(el){
 var events = $(el).data(\'events\');
 for (i in $(el).data(\'events\')) {
  console.log(i) //logs click dblclick and mouseover
  }
}
我知道jQuery将事件对象存储为数据属性,即ѭ1,并且eventbug附加组件显示事件绑定,因此必须有办法。 我还将添加这个问题是因为我了解了旧版IE浏览器中的内存泄漏以及在从DOM中删除节点之前最好先删除绑定事件,这使我思考,如何测试什么事件绑定到一个元素? 提前谢谢了;)     
已邀请:
如果您不能完全控制环境,则无法可靠地知道元素上的侦听器。一些库手动控制事件监听器,例如jQuery将它们存储在一个对象中,并向该元素添加自定义属性,以便在出现偶数时,它使用custom属性来查找该元素和事件的侦听器并对其进行调用。 尝试:
<div id=\"d0\">div 0</div>
<script type=\"text/javascript\">

var el = document.getElementById(\'d0\')
el.addEventListener(\'click\',function(){alert(\'hey\');},false);

// Make sure listener has had time to be set then look at property
window.setTimeout(function(){alert(el.onclick)}, 100); // null

</script>
因此,要知道已添加了哪些侦听器,您需要完全控制。 编辑: 明确地说,没有可靠的方法来使用javascript检查元素并发现已添加了哪些侦听器,甚至根本没有添加任何侦听器。您可以创建事件注册方案,以跟踪使用事件注册方法添加的侦听器。但是,如果以其他方式(例如直接通过addEventListener直接添加)添加了侦听器,则您的注册方案将不会知道它们。 正如在其他地方指出的那样,jQuery(和其他人)无法跟踪未使用jQuery事件注册方法(单击,绑定,鼠标悬停等)直接添加到元素的侦听器,因为它们使用这些方法进行注册(和调用)听众。     
// list of onevent attributes; you\'ll have to complete this list
var arr = [\'onclick\', \'onmouseover\', \'onmouseup\'];

for ( var i = 0; i < arr.length; i++ ) {
    if ( el[arr[i]] != null ) {
        // element has an arr[i] handler
    }  
}
其中“ 4”是对您的DOM元素的引用 完整列表在这里     

要回复问题请先登录注册