Я пытаюсь сделать эту работу целыми днями, не повезло, поэтому я решил поделиться информацией и, возможно, кто-то придумает решение.
Я хочу получить точный размер видового экрана, когда работает мягкая клавиатура. В настоящее время я использую следующий код в заголовке, чтобы сайт мог реагировать:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
Что я понял, так это то, что когда появляется мягкая клавиатура, она использует высоту устройства как высоту видового экрана и подталкивает остальную часть сайта вверх, что заставляет меня предположить, что она получает высоту от ширины = параметр ширины устройства,
Используя следующий код после запуска мягкой клавиатуры:
setTimeout(function() {
viewport = document.querySelector("meta[name=viewport]");
viewport.setAttribute('content', 'height=auto');
}, 300)
И затем получение высоты с помощью jquery показывает результаты CORRECT на Android - иначе видимый размер видового экрана БЕЗ виртуальной клавиатуры, но не на iOS. Я получаю случайное число, которое я предполагаю, что остальные метатеги не существуют, поэтому я получаю увеличенную версию веб-сайта и число, например, 75 или 100 (на iphone 4s).
Я также попытался создать фиксированный элемент после приведения клавиатуры вверх, заставив использовать высоту видового экрана с вершиной: 0; и внизу: 0; атрибуты, но я все равно получаю исходную высоту.
Что ближе к этому, устанавливается высота метатега видового экрана до фиксированного значения, которое может быть получено jquery $(window).height()
, что означает, что метатег фактически имеет значение после запуска клавиатуры, но есть нет истинного значения для фиксированной высоты.
Я видел много тем вокруг этого, но ни один с решением. Любой, у кого есть решение для этого?