use*_*531 16 javascript events
我有一个JavaScript函数设置一些HTML节点的"onclick" - 事件 - 即使之前设置了"onclick"-event.
我如何检查是否已经设置了该事件,因此我可以扩展我的功能,仅在尚未设置的HTML节点上设置事件?
Jas*_*ing 10
检查,像这样:
if(typeof someNode.onclick == "function") {
// someNode has an event handler already set for the onclick event...
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果你正在使用一个库,你应该这样说 - 如果你是,它可能更容易/更清洁,并根据你使用的库而有所不同...
应该可以<element>.addEventListener()通过拦截对函数的调用来检测附加的事件处理程序:
var myListOfAddedEvents = [];
var realAddEventListener = HTMLElement.prototype.addEventListener;
HTMLElement.prototype.addEventListener = function(evtType,fn,cap) {
myListOfAddedEvents.push(
{on: this, type: evtType, handler: fn, capture: cap}
);
return realAddEventListener.apply(this, arguments);
};
Run Code Online (Sandbox Code Playgroud)
注意:这是未经测试的代码,可能需要一些工作.我希望所有元素类型都能使用相同的函数,但我可能错了.此外,只有在开始添加事件之前可以运行这些代码时,它才会起作用.可以类似地构建attachEvent的副本.