禁用软键盘的大写锁定检测(移动浏览器)

disable caps lock detection for soft keyboards (mobile browsers)

对于密码输入,我有一些 JavaScript 检查是否按下了大写锁定以警告用户。它使用 "standard" 的方式来做到这一点——查看 keyboardEvent.keyCode 和 keyboardEvent.shiftKey(以及其他一些针对古代浏览器的废话)。

问题是这对移动用户来说很烦人(至少 iOS,没有 Android 人的报告),因为 "caps lock" 是获得大写字母的正常方式。

目前我正在使用一些严重的用户代理嗅探来禁用它,但我觉得必须有一种不那么脆弱的方式来知道这是一个软(移动)键盘并且大写字母的大写锁定是正常方式事情(所以我不再为此而烦恼!)

所以,虽然不完美,但这就是我想出的:

$(document).ready(function() {
        function hasTouch() {
                try {   
                        document.createEvent("TouchEvent");
                } catch (e) {
                        return false;
                }
                return true;
        }
        capsLockQuiet = hasTouch();
        ...
});