【问题标题】:Chrome on android return everytime 229 for keyCodeandroid 上的 Chrome 每次返回 229 获取 keyCode
【发布时间】:2021-09-08 11:46:45
【问题描述】:

我有这段代码:

...
@HostListener('keydown', ['$event'])
onKeyDown(evt: KeyboardEvent) {
    console.log('KeyCode : ' + evt.keyCode);
    console.log('Which : ' + evt.which);
    ....
}

对于 ios 检查所有浏览器 --> 工作正常

对于android,正在使用firefox,但在chrome上我有229 for evt.keyCode && evt.which,不管按哪个键。

对这个问题有想法吗?

【问题讨论】:

    标签: javascript angular google-chrome


    【解决方案1】:

    看起来keyCode 已被弃用,并且由于遗留原因在某些浏览器中仍受支持: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode

    建议改用evt.code

    如果可能,您应该避免使用它;它已经被弃用了一段时间。相反,您应该使用 KeyboardEvent.code(如果已实现)。不幸的是,有些浏览器仍然没有它,因此您必须小心确保使用所有目标浏览器都支持的一种。

    根据the supported browsers table 的功能判断,使用key 应该没问题。

    【讨论】:

    • 不工作,evt.code 在 android、chrome 浏览器上返回空
    • 奇怪。您是否将侦听器添加到正确的 DOM 元素?对我来说(桌面 Firefox,所以可能会有所不同!)如果我将侦听器附加到 window 就像这样:window.addEventListener('keydown', (e) => console.log(e.code));
    【解决方案2】:

    evt.keyCode 已弃用,而是使用 evt.key 返回密钥的 String 描述。

    尽管如此,它仍然无法在 Chrome Android 上运行,因为它是 Chromium 项目的 a well known bug

    它应该可以在 Firefox Android 上运行。

    【讨论】:

      猜你喜欢
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多