3

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

例如:假设我的文档是

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

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

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

输出

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

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

4

1 回答 1

2

是一个可能有帮助的页面。

此外,这段代码在您正在搜索的内容中做了一些事情:

// 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 */
       }
    }
}
于 2012-09-05T14:03:13.660 回答