shift+Enter JavaScript 事件:Android 标准键盘是否存在错误?

问题描述 投票:0回答:2

我正在尝试深入解决当您在网页输入文本字段中按shift+Enter时JavaScript中到底发生了什么

问题是,shift+Enter 事件在流行的移动操作系统上似乎以某种方式灾难性地不受支持。

大多数设备上“shift+Enter”的事件表

如果我理解正确,这是大多数设备上的假定事件表:

https://w3c.github.io/uievents/tools/key-event-viewer.html

以上正确情况验证于:

  • 桌面、物理键盘、Linux、Firefox 111
  • 桌面、物理键盘、Linux、Chromium 111
  • mobile,Android 11 LineageOS,虚拟键盘“Hackers Keyboard”,自带浏览器
  • mobile, Android 11 LineageOS, 虚拟键盘“Hackers Keyboard”, with Firefox 110
  • 随意添加其他设备,但我很确定这是非常正确的行为

这是如何测试的(结果相同):

  • 用一根手指按住左移键,然后用另一根手指按回车键
  • 双击 shift(使其保持活动状态)然后点击 Enter
  • 从 shift 键拖动,按下 Enter(这是一个有效的手势,例如写一个大写字母)

Android 标准键盘上“shift+Enter”的事件表:错误?

但是,在带有虚拟键盘的手机上,shift+enter 似乎未被检测到:

https://w3c.github.io/uievents/tools/key-event-viewer.html

以上问题情况转载于:

  • 移动设备、Android 11 LineageOS、原装键盘 AOSP、Firefox 110
  • 手机,Android 11 LineageOS,原厂键盘 AOSP,DuckDuckGo 浏览器
  • 手机,Android 11 LineageOS,原厂键盘 AOSP,原厂浏览器

(股票键盘有APK包名称

com.android.inputmehtod.latin
所以我认为它的源代码可能是这个,如果需要更多调查:https://android.googlesource.com/platform/packages/inputmethods/LatinIME/ )

问题

  1. 在这种情况下,是否有任何已知的解决方法可以建议 JavaScript 程序员识别 shift+Enter?
  2. 您认为这是 Android 中的错误吗?如果是,是否知道 Android AOSP 中的任何上游问题?
javascript android keyboard-events
2个回答
1
投票
  1. 是的,这可能是一个错误。
  2. ,目前没有建议的解决方法。

0
投票

是的,你的问题似乎与大多数安卓手机的默认键盘有关。

如何验证您的 Android 是否受到影响

  1. 设置 > 应用 > 查看全部
  2. 寻找“安卓键盘(AOSP)
  3. (我可以在版本 11 包上重现
    com.android.inputmethod.latin

很有可能你的安卓有这个键盘,所以,你很可能受到影响。

为什么会这样

正如用户@padeso所提到的,可能根本原因是Android AOSP键盘的后端不支持多键事件,即使它的前端看起来像。您可能有兴趣在 Google 问题跟踪器上关注此错误报告:

https://issuetracker.google.com/issues/276611340

解决方法

没有仅 JavaScript 的解决方法来检测 shift+Enter 组合,并且实际上没有“替代事件”来检测它。唯一具体的解决方法是联系您的 Android 用户放弃他们默认的 AOSP 键盘并安装一个更稳定的键盘,但是 - 显然 - 这不是一个可行的选择。

所以?现在怎么办?

目前,可能有超过 10 亿台 Android 设备受到此问题的影响。这不是 JavaScript 开发人员应该反对的事情。放弃吧

我的建议是:避免在手机上依赖这两种情况的区别。因此,请避免使用“使用 Enter 发送”和“使用 shift+Enter 添加换行符”之类的东西。在移动设备上,确保 Enter 键始终只是添加一个换行符,并确保有一个专用按钮来“提交”数据。

© www.soinside.com 2019 - 2024. All rights reserved.