如果事件名称是自定义的,如何在JavaScript中知道?

时间:2015-05-18 07:39:38

标签: javascript dom

如何知道某个事件是否是JavaScript中的DOM / HTML事件?

假设我有一个元素<a>。我怎么知道clickfocus是原生事件,而mycustomevent之类的其他事件不是?

例如,如果我想以不同的方式附加侦听器,如果事件是本机或自定义的话:

var eventName; // can be 'foo', 'click' or 'touchstart';

var link = document.querySelector('a');
if(//custom){
    eventName += '.domain';
}
link.addEventListener(eventName, function (){ //... });

2 个答案:

答案 0 :(得分:3)

function isNativeEvent(eventname) {
    return typeof document.body["on" + eventname] !== "undefined";
}

这将检查是否在某个元素上定义了事件处理程序(包括null),这意味着它是一个本机事件。

> isNativeEvent('click')
< true
> isNativeEvent('myCustomEvent')
< false

答案 1 :(得分:0)

此处列出了Javascript原生事件:http://en.wikipedia.org/wiki/DOM_events,因此如果您使用的事件不在列表中,则表示自定义事件。