如何获取HTML对象的onclick?

时间:2013-05-31 18:28:08

标签: javascript

使用vanilla JS我想知道是否可以在HTML对象上看到属性onclick(div)

for (var name in element) {
        if(name == "onclick"){
            // do smt
        }
    }

1 个答案:

答案 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删除处理程序)