gpt4 book ai didi

dart - Dart 中的跨浏览器键事件处理程序

转载 作者:行者123 更新时间:2023-12-03 03:03:26 26 4
gpt4 key购买 nike

我正在使用 M1 版本并编写了一个如下所示的 key 处理程序:

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 中运行良好,但在 FF 或 IE 中不行。必须有更好的方法来处理空格键并仍然将其保留在一个开关中,对吗?我知道我可以查看其他字段以获得空间,但这也不是一个好的选择(从那时起我会将代码分成两个 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 中处理跨浏览器兼容的关键事件的最佳方法是什么?

最佳答案

根据您的问题,另一个答案是 source code , 而这个 bug (你应该加注星标),这是我的建议:

  • 使用键码。
  • 如果需要,不要害怕使用 if/else if 而不是 switch 语句。 JavaScript 无论如何都没有优化的 switch 语句。
  • 直到 this bug得到修复,您可能应该只创建自己的常量。

  • 更新 : 这是 fixed .

    关于dart - Dart 中的跨浏览器键事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13141946/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com