Android Chrome 输入监听器收到奇怪的数据

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

我有拦截键盘事件(如 keydown)的代码。但是我无法在 Android 手机上使用它,因为 keydown 事件不适用于 Android Chrome 上的虚拟键盘。因此,我决定使用输入事件监听器。

这是我设置输入侦听器的方法:

const tuşaBasılıncaSuniKlavye = (hadise: Event) => {
  const metinHadisesi = hadise as InputEvent;

  let harf = "";
  if (metinHadisesi.data !== null) {
    harf = metinHadisesi.data;
  }

  console.log("Hadise> data: -" + harf + "- -" + harf.slice(-1) + "-");
  console.log("Hadise> inputType: -" + metinHadisesi.inputType + "-");
};

metinSahası.addEventListener("input", tuşaBasılıncaSuniKlavye, false);

现在,如果我慢慢按下按键,一切都会正常。但是,如果我单击 1 或 2 个键,然后快速单击空格 2 次,侦听器会收到 deleteContentBackward inputType 并将输入字段内的文本打乱。

示例:

Hadise> data: -G- -G-
Hadise> inputType: -insertText-

Hadise> data: -h- -h-
Hadise> inputType: -insertText-

Hadise> data: -- --
Hadise> inputType: -deleteContentBackward-

Hadise> data: -Gj - - -
Hadise> inputType: -insertText-

您知道为什么会发生这种情况吗?谢谢。

javascript android google-chrome virtual-keyboard
1个回答
0
投票

我不知道为什么我的问题 ID 被否决,但这是我现在用来解决这个问题的方法:

以下是这里的答案: https://stackoverflow.com/a/14469824/3517339

我已将这些添加到我的输入字段中:

metinSahası.setAttribute("spellcheck", "false");
metinSahası.setAttribute("autocorrect", "off");
metinSahası.setAttribute("autocapitalize", "off");

对于像“.”这样奇怪的点和空格数据,我已将其替换为双空格。像这样:

harf.replace(". ", "  ")

目前有效。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.