Отключить обнаружение заглавных букв для программных клавиатур (мобильные браузеры)

Для ввода пароля у меня есть некоторый JavaScript, который проверяет, нажата ли заглушка, чтобы предупредить пользователя. Он использует "стандартный" способ сделать это - глядя на keyboardEvent.keyCode и keyboardEvent.shiftKey (и некоторые другие глупости для древних браузеров).

Проблема в том, что это раздражает мобильных пользователей (по крайней мере, iOS, никаких отчетов от людей с Android), потому что "блокировка заглавными буквами" является обычным способом получения заглавной буквы.

В настоящее время я использую некоторый ужасный пользовательский агент, сниффинг, чтобы отключить это, но я чувствую, что должен быть менее хрупкий способ узнать, что это - мягкая (мобильная) клавиатура, и блокировка заглавных букв для прописных букв - нормальный способ вещей (таким образом, я брось курить об этом!)

1 ответ

Решение

Итак, как бы я не был несовершенен, вот что я придумал:

$(document).ready(function() {
        function hasTouch() {
                try {   
                        document.createEvent("TouchEvent");
                } catch (e) {
                        return false;
                }
                return true;
        }
        capsLockQuiet = hasTouch();
        ...
});
Другие вопросы по тегам