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