4

就像我在标题中说的,我想在 Dart 中模拟一个 keyup 事件。问题是我还没有找到如何创建一个新的 KeyboardEvent 对象。

我发现的唯一方法是使用 Event(String type) 构造函数,然后在窗口对象上调度它。但这不起作用,因为我的“keyup”处理程序在参数中接受了一个 KeyboardEvent。例子:

window.on.keyUp.add((KeyboardEvent e){
 print('keyUp handler');
});
KeyboardEvent e = new Event("KeyboardEvent");
window.on.keyUp.dispatch(e);

有没有办法创建和调度 KeyBoardEvent 来模拟 Dart 中的“keyup”?

另外,我应该提到我也尝试在 JavaScript 中触发事件,这要归功于 js-interop 库,但它只触发 JS 处理程序。

4

2 回答 2

1

试试下面的代码:

window.on.keyUp.add((Event event){
    print('keyUp handler');

    if(event is KeyboardEvent)
    {
      KeyboardEvent keyEvent = event as KeyboardEvent;
      //do stuff with keyEvent if needed
    }  
});

window.on.keyUp.dispatch(new Event("keyup"));

我认为 Event 构造函数上的参数必须是事件的类型。此外,您可以检查事件是否是键盘事件,例如,您可以处理 KeyIdentifier。

于 2012-11-28T03:44:17.780 回答
0

现在可以从窗口调度 KeyBoardEvent,请参阅 Google Group 上的讨论以获取更多信息:https ://groups.google.com/a/dartlang.org/d/topic/misc/mgnd1TUGn68/discussion

于 2012-12-29T17:11:40.973 回答