我知道DOM中的event.type
。我可以解析例如mouseup
,keydown
,touchstart
等等。但是我如何检查事件子类?与MouseEvent
,AnimationEvent
或ClipboardEvent
一样?我可以使用event.type
属性吗?
答案 0 :(得分:1)
由于JavaScript是prototype-based language,你可以使用Object.prototype.toString.call()
做一点奇怪的事情,然后稍微清理一下结果,如下所示:
var button = document.getElementById("testEvent");
button.onclick = function(e) {
console.log(
Object.prototype.toString.call(e).replace(/^\[object ([^\]]*)\]/, "$1")
);
}
这个小提琴显示它在行动 - http://jsfiddle.net/SrmGJ/1/在FireFox中为我工作。它应该在小提琴中输出"MouseEvent"
,但是如果你把它连接到some of the other events,你会看到不同的结果。
另一种方法是为每种类型调用EventType.prototype.isPrototypeOf(e)
:
...
if (MouseEvent.prototype.isPrototypeOf(e)) { console.log("MouseEvent"); }
if (AnimationEvent.prototype.isPrototypeOf(e)) { console.log("AnimationEvent"); }
if (KeyboardEvent.prototype.isPrototypeOf(e)) { console.log("KeyboardEvent"); }
...
但那看起来很讨厌恕我直言。
答案 1 :(得分:1)
您可以查看类
void myHandler(Event e) {
if(e is MouseEvent) {
print('Mouse');
} else if(e is AnimationEvent) {
print('Animation');
} else if(e is KeyboardEvent) {
print('Keyboard');
}
}