Chrome for Android中的keycode始终为零

bar*_*ooo 31 javascript google-chrome keycode javascript-events

我需要在我的网站上检测自定义搜索框的密钥代码,但在Chrome for Android上密钥代码总是返回零(退格区除外,返回8).有没有其他人经历过这一点,你是如何解决它的?我们的网站适用于除Chrome for Android以外的所有移动浏览器,因为我们无法检测到非零键码或字码.

我在Android 4.1.2 Jelly Bean上运行Chrome 27.0.1453.90.这个问题可以通过以下简单方法重复:
alert(event.keyCode);

cod*_*der 14

以下解决方案也适合我.也可能对其他人有用.

var getKeyCode = function (str) {
    return str.charCodeAt(str.length - 1);
}

document.getElementById("a").onkeyup = function (e) {
    var kCd = e.keyCode || e.which;
    if (kCd == 0 || kCd == 229) { //for android chrome keycode fix
        kCd = getKeyCode(this.value);
    }
    alert(kCd)
}
Run Code Online (Sandbox Code Playgroud)

  • 只捕获了最后一个字符keyCode.如果我在文本输入的中间或开头输入怎么办? (4认同)

小智 2

获取 keyCode 的真正方法是使用

event.which
Run Code Online (Sandbox Code Playgroud)

事件对象上的这个属性是标准化event.keyCode属性。您也可以在此处的jQuery 文档或此处的MDN 中阅读相关内容

换句话说,我对 Android 设备上的键盘事件有很多经验。由于设备碎片(设备或外部键盘应用程序之间的 ROM 不同),Android 浏览器有时会出现键盘事件问题。最好的方法是尝试使用所有键盘事件(keydown、keyup 和 keypress)并比较每个结果以获得按下的键。

最好的方法是在“输入”事件中使用并始终获取最后的包机。输入事件可以像我在这里的回答一样进行控制。

  • chrome mobile(`event.which`)对于某些按键仍然表现得很奇怪。例如,我发现有时需要发送 alt+<char> 才能被识别为纯 <char> (在文本字段之外),并且许多特殊键(例如 home/end)返回为 0。 (2认同)