Javascript-форум (https://javascript.ru/forum/)
-   Мобильный JavaScript (https://javascript.ru/forum/mobile/)
-   -   android keyboard (https://javascript.ru/forum/mobile/20536-android-keyboard.html)

cedage 08.08.2011 23:35

android keyboard
 
всем привет
как на js перехватить событие появления виртуальной клавы
т.е. кликнули на инпут, появилась клава... вызвали такуюто функцию

в версии андроида 2.2 она открывается по верх контента, а в версии 2.3.3 она как будто толкает контент снизу, и документ становиться совсем маленьким по высоте...

da_ff 09.08.2011 11:32

А что мешает реагировать на фокус инпута?

cedage 09.08.2011 14:04

ниче не мешает, я так и делал
дело в том что инпут c autocomplete
после выбора из предложенного списка значения, фокус из поля пропадает, и появляются элементы которые скрывались по onfocus, а клава остается и места на странице от силы пикселей 20, потому как все место занимается нижним и верхним тулбарами
есть у меня подозрения что js не имеет доступа к api ф-я клавиатуры
p.s. по onfocus я прятал нижний бар

da_ff 09.08.2011 19:13

Ну да, виртуальная клавиатура на андроидах не всегда ведет себя корректно.
Такой сомнительный вариант. А при появившейся клавиатуре размеры окна меняются? Может их проверять на изменение? Правда, надо предусмотреть поворот экрана в таком случае.

cedage 10.08.2011 19:01

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

вот что получилось
var dH; //высота окна браузера
			var orient = false; //переключатель, меняется при смене положения девайса горизонт/вертикаль
			$(function(){
				dH = $(".container").height(); //высота окна браузера после загрузки страницы
			});
			window.onorientationchange = function(){
				orient = true;
			}
			$(window).resize(function(){
				if(orient){
					dH = $(".container").height();
					orient = false;
					return;
				}
				var h = $(".container").height(); //текущая высота
				if(h < dH){
					//клавиатура появилась
				}else{
					//клавиатура спряталась
				}
			});


Часовой пояс GMT +3, время: 10:35.