我使用的是M1释放,写了一个关键的处理程序是这样的:在FF或IE跨浏览器的关键事件处理程序飞镖
void _onKeyPress(KeyboardEvent e) {
switch (e.keyIdentifier) {
case KeyName.UP:
case KeyName.LEFT:
e.preventDefault();
prev();
break;
case "U+0020": // FIXME Must be a better way, or?
case KeyName.DOWN:
case KeyName.RIGHT:
e.preventDefault();
next();
break;
}
}
它工作正常,在Chrome,但不是。必须有更好的方法来处理空格键,并将其保存在一个开关中,对吗?我知道我可以查看其他字段来获得空间,但这不是一个好的选择(因为那时我会将代码分成两个switch语句)。无论如何,它在FF和IE中不起作用的问题更糟糕。如果我改写为使用keyCode
,它可以在所有浏览器上正常工作。
void _onKeyPress(KeyboardEvent e) {
switch (e.keyCode) {
case 38:
case 37:
e.preventDefault();
prev();
break;
case 32:
case 40:
case 39:
e.preventDefault();
next();
break;
}
}
我的问题是,我找不到虚拟键码的常量。难道我做错了什么?处理Dart中跨浏览器兼容的关键事件的最佳方式是什么?
感谢jj,我不害怕if/else,但是你必须同意,与开关相比,你会失去清晰度,我会问问题: - ) –
谢谢你主演,托比亚斯:)是的,我同意你失去了清晰度与开关相比。 –
这已修复!更新了我的答案。 –