枚举附加到文档的HTML对象的所有事件

时间:2012-09-05 13:55:15

标签: html dom javascript-events enumeration

经过大量的谷歌搜索,我在这里询问是否可以枚举附加到DOM中HTML元素的所有事件。

例如:假设我的文档是

<body onscroll=docScrolled()>
    <span onmouseover=doSomethingElse()> Span is here </span>
    <div id="container">

    <script>
        $("#container").bind("click", doSomething);
</body>

加载完我的文档并执行所有javascript代码后,我想在点击时提供一个按钮,显示所有HTML元素和附加到它们的事件。

Ouptut

<body onscroll=docScrolled()> ------ onscroll
<span onmouseover=doSomethingElse()> Span is here </span> -----onmouseover
<div id="container"> ------onclick

所以最终的问题是如何枚举所有HTML元素并找出附加到它们的事件。

1 个答案:

答案 0 :(得分:2)

Here是一个可能有用的页面。

此外,这段代码与您要搜索的内容有关:

// List bound events:
console.dir( $('#elem').data('events') );

// Log ALL handlers for ALL events:
$.each($('#elem').data('events'), function(i, event){
    $.each(event, function(i, handler){
        console.log( handler.toString() );
    });
});

更新: https://developer.mozilla.org/en-US/docs/DOM/DOM_event_reference显示DOM元素的事件列表。您应该创建一个函数来检查是否为任何事件分配了函数。

这将是:

var events = ["onchange","onkeydown",...]

function hasEventsAssigned(elem) {
    for (var i = events.length; i > 0; i--) {
       if (elem[events.i]) {
           /* do something */
       }
    }
}