Позволяет решить ряд проблем с текстовым блоком, если над ним нет абсолютно позиционированного блока (тулбар и тд) тогда он ведет себя более адекватно (не скачет и отображается полностью), но так же не скалируется с учетом клавиатуры.
Применяем как при загрузке документа, так и при изменении размера окна.
Я правильно понимаю, что при появлении экранной клавиатуры по факту происходит изменение высоты видимой области?
Да, происходит уменьшение Видимой области. Предложенный вами способ один из первых, что приходил ко мне в голову. Тесты показали, что блок в таком случае съезжает вверх нижним краем упираясь в клавиатуру и в большинстве случаев его верхняя кромка становиться выше видимой области экрана и не позволяет проскролить вверх до верхней кромки. Появление клавиатуры никак не сказывается на размерах: $(window).height(), window.innerHeight, window.outerHeight возможно необходимо замерять размеры другого элемента, но информации на данный счет не нашел, к сожалению.
Вынужден все же спросить, устанавливали ли вы вышеописанный скрипт на событие $(window).resize? Если да, то это действительно странно, так как при том же открытии firebug'a в браузере, значение $(window).height() изменяется.
Если все действительно так, как вы описали, выходит экранная клавиатура является элементом в верстке, нежели в интерфейсе обозревателя. Следовательно есть возможность отследить событие появления клавиатуры, замерять при помощи height() ее высоту и вычесть это значение из $(window).height()
Судя по тому, что клавиатуру можно вызвать в любом приложении, в т.ч. ее использования не подразумевающей, клавиатура таки ни коим образом не влияет ни на layout приложения ни на DOM страницы (тем не менее, сами андроид-приложения могут определять появление клавиатуры и обрабатывать их должным образом. Видимо браузер андроида делать это нужным не считает)
В том то и дело что браузер обрабатывает ее появление сдвигая блок textarea вверх упирая нижнюю грань textarea в верхнюю кромку появившейся клавиатуры собственно и остальной контент при появлении оной так или иначе на нее реагирует непонятно только эта реакция на базе оси и или все таки с ней можно как-то взаимодействовать и отслеживать…
ИМХО, 90% пользователей открывают клавиатуру нажатием на textarea. Было бы логично, мне кажется, вешать изменение размера на получение фокуса)
Ну и если будет скакать — добавить еще и scroll(), или как это называется в jquery?..
Да, конечно и такое событие на onclick именно через jquery тоже пробовал. На scroll, resize тоже стоит пересчет размера в зависимости от размера window по высоте, но судя по размеру textarea и размерам в px выводимым для дебага размер window с клавиатурой и без клавиатуры не меняется. Возможно есть возможность отследить появление клавиатуры или ее размер, но не нашел.
Ну так я и говорю, что отследить размер клавы не получится(
Мне кажется можно взять половину экрана в качестве наиболее популярного значениия и успокоиться на этом)
З.ы. пишу этот камент с андроида, у хабра размер поля ввода — где-то треть пустого места на стандартном зуме. Никакаго дискомфорта это не вызывает. Особенно на фоне того, что по ширине оно в экран не помещается)