如何在JavaScript中知道事件名称是否为自定义?
如何知道事件在JavaScript中是否是DOM/HTML事件 比方说,我有一个元素如何在JavaScript中知道事件名称是否为自定义?,javascript,dom,Javascript,Dom,如何知道事件在JavaScript中是否是DOM/HTML事件 比方说,我有一个元素。我怎么知道click或focus是本机事件,而另一个类似mycustomevent的则不是 例如,如果事件是本机事件或自定义事件,我希望以不同的方式附加侦听器: var eventName; // can be 'foo', 'click' or 'touchstart'; var link = document.querySelector('a'); if(//custom){ eventName
。我怎么知道click
或focus
是本机事件,而另一个类似mycustomevent
的则不是
例如,如果事件是本机事件或自定义事件,我希望以不同的方式附加侦听器:
var eventName; // can be 'foo', 'click' or 'touchstart';
var link = document.querySelector('a');
if(//custom){
eventName += '.domain';
}
link.addEventListener(eventName, function (){ //... });
此处列出了Javascript本机事件:,因此,如果您使用的事件不在列表中,则它是一个自定义事件
function isNativeEvent(eventname) {
return typeof document.body["on" + eventname] !== "undefined";
}
这将检查事件处理程序是否在某个元素上定义(包括null
),这意味着它是本机事件
> isNativeEvent('click')
< true
> isNativeEvent('myCustomEvent')
< false
>isNativeEvent('click')
iNativeEvent('myCustomEvent')
您可以阅读文档。检查原型上是否存在该事件将区分新分配的事件和原型事件。。。(当然,您或其他人可能已经更改了原型本身;这将使该方法无效。)什么是attachEventListener
?在自定义事件中添加一个变量,并检查该变量是否存在。。每个nativ事件都不应该有这个变量。@Justinas是的,我可以,但这里的目标是动态地执行,但是我想知道是否所有事件都在节点上有这个属性,例如touchstart
,看看事件是否在jQuery中注册,但没有在JS中注册,然后这个函数返回true,但该事件不是本机JS事件这似乎是jQuery使用的方法()