禁用软键盘的大写锁定检测(移动浏览器)
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();
...
});
对于密码输入,我有一些 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();
...
});