2014-02-18 2 views
3

Как мы можем генерировать и отправлять ключевое событие («keypress», «keyup», «keydown») в Dart?Как отправить KeyEvent (для имитации ввода) в Dart?

Я пробовал:

// Context: import 'dart:html' as dom; 
... 
InputElement input = dom.querySelector(...); 
var ev = new KeyEvent('keypress', keyCode: 65); 
print("ev=$ev, and (ev is Event) is ${ev is Event}"); 
    // ==> output: ev=Instance of 'KeyEvent', and (ev is Event) is true 
input.dispatchEvent(ev); 
    // ==> yields 

Последнее утверждение вызывает:

Caught Invalid class: expected instance of Event 
#0  Node.dispatchEvent (.../dart/dart/html/Node.dart:586) 

Исключение сообщает, что ev не является экземпляром Event и еще от печатной продукции, мы видим, что ,

ответ

3

По-видимому, это признается как ошибка: Dart Issue #16869, "Cannot dispatch KeyEvent". Как только это будет исправлено, я опубликую обновление.

Единственное решение, которое я нашел в то же время, чтобы имитировать повторяющиеся события нажатия клавиш путем использования TextEvent. Вот вспомогательная функция, которую я использовал

/** 
    * This function simulates typing the given value string into the input 
    * field. It has the side-effect of setting the window focus to the input. 
    */ 
    void setInputValueViaTextEvent(InputElement input, String value) { 
    input..focus() 
     ..dispatchEvent(new TextEvent('textInput', data: value)); 
    } 
Смежные вопросы