Вход

Просмотр полной версии : android keyboard


cedage
08.08.2011, 23:35
всем привет
как на 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{
//клавиатура спряталась
}
});