Возникает ли какое-либо событие javascript при открытии экранной клавиатуры в мобильном сафари или Chrome?

Я пытаюсь реагировать на экранную клавиатуру в наших веб-приложениях. К сожалению, это усложняется некоторыми вещами:

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

Итак, если кто-то выбирает какое-либо поле ввода, экранная клавиатура открывается и блокирует вид на половине страницы, поэтому некоторые вводы становятся невидимыми, и мне нужно это изменить.

К сожалению, похоже, что вообще нет события, которое означает, что половина приложения просто стала невидимой. Я уже проверил события прокрутки и изменения размера, но они тоже не сработали.

Конечно, я всегда мог как-то отреагировать, как только обязательно попаду на планшет. Вероятно, 95% пользователей все равно не подключат аппаратную клавиатуру. Но разве нет более чистого способа?


person koehr    schedule 25.11.2014    source источник


Ответы (3)


К сожалению, ответ здесь однозначен: НЕТ. Здесь есть несколько связанных вопросов с дополнительной информацией и хитростями:

стиль экрана при активной виртуальной клавиатуре

Веб-приложение для iPad: обнаружение виртуальной клавиатуры с помощью JavaScript в Safari?

Android / iPhone Webkit, событие запускается при нажатии клавиатуры?

person koehr    schedule 13.07.2015

Событие изменения размера срабатывает, когда клавиатура изменяет размер вашей страницы. Добавьте в окно обработчик событий onresize и при необходимости отрегулируйте прокрутку.

person Zectbumo    schedule 17.05.2018

Вы пробовали использовать события focus и blur?

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

Я искал похожую проблему, и этот трюк решает мою проблему. ✌????

*** РЕДАКТИРОВАТЬ ****

Как @mac использовал и проиллюстрировал нас в комментарии ниже ????

person Augusto TMW    schedule 31.07.2017
comment
Событие фокуса не будет запущено снова, если клавиатура закрыта без потери фокуса. - person Jean-Sébastien Tremblay; 17.09.2020
comment
В моем сценарии я использовал фокусировку на вводе, чтобы обозначить, что клавиатура открыта, и размытие, чтобы обозначить, что она закрыта. У меня это сработало. - person mac; 15.11.2020