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

Enumerate all events attached to HTML objects of a document

本文关键字:对象 事件 HTML 枚举 文档      更新时间:2023-09-26

经过大量的谷歌搜索,我在这里询问是否可以枚举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元素,并找出附加到它们的事件。

这里有一个页面可能会有所帮助。

此外,这段代码在你搜索的行中做了一些事情:

// 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 */
       }
    }
}