如何检查哪个子类是被触发的事件?

时间:2014-06-05 09:42:23

标签: dart dart-html

我知道DOM中的event.type。我可以解析例如mouseupkeydowntouchstart等等。但是我如何检查事件子类?与MouseEventAnimationEventClipboardEvent一样?我可以使用event.type属性吗?

2 个答案:

答案 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');
  }
}