使用vanilla JS我想知道是否可以在HTML对象上看到属性onclick(div)
for (var name in element) {
if(name == "onclick"){
// do smt
}
}
答案 0 :(得分:2)
您可以使用以下命令立即检索element
的{{1}} 属性,而不是枚举onclick
的属性。
element
现在的事件与var clickHandler = element.onclick;
(以及旧IE中的addEventListener
绑定),每个事件类型允许多个处理程序。设置attachEvent
属性只允许一个处理程序,可以覆盖,通常不是在网页中绑定处理程序的方法。
不幸的是,您无法检索绑定了onevent
(和addEventListener
)的任何侦听器,而无需编写跟踪它们的包装函数...例如:
attachEvent
你会像以下一样使用它:
var events = [];
function addEvent(element, eventName, callback) {
element.addEventListener(eventName, callback, false);
var found = false;
for (var i = 0; i < events.length; i++) {
if (events[i].el === element) {
found = true;
events[i].list.push(callback);
break;
}
}
if (!found) {
events.push({
el: element,
list: [callback]
});
}
}
function viewEvents(element) {
for (var i = 0; i < events.length; i++) {
if (events[i].el === element) {
return events[i].list;
}
}
return null;
}
(当然,您需要一个var div = document.getElementById("some_id");
addEvent(div, "click", function () {
console.log("whatever");
});
console.log(viewEvents(div));
的包装器,它也会从removeEventListener
删除处理程序)