2013-06-19 3 views
18

Я разрабатываю плагин Javascript/JQuery для адаптивного веб-дизайна. Он имеет функцию, которая контролирует область просмотра для изменений, в частности, изменение размера и ориентацию. Когда обнаружено изменение, вызывается соответствующая функция обратного вызова.Предотвращение изменения размера видового экрана веб-страницы, когда активна специальная клавиатура Android

Однако, я просто заметил, что на Android (в частности, с помощью браузера акций в Google Galaxy Nexus), если пользователь пытается использовать мягкую клавиатуру, он изменяет размер окна просмотра, тем самым активируя функцию обратного вызова. Это поведение, которое я бы хотел устранить.

Есть ли способ - через Javascript - отключить это поведение или обнаружить его, чтобы я мог внести изменения в базу кода, чтобы разместить его ?!

Решения, которые я видел до настоящего времени, должны в основном работать с Android App Development, и я не уверен, что они применимы в моем случае.

Спасибо.

ответ

5

Хорошо, после некоторого возиться, я обнаружил решение моей проблемы.

Так что же происходит, когда мягкая клавиатура отображается/скрыта ?! В моем тесте viewport width остается постоянным. Однако viewport height изменяет размер [((current - previous)/previous)*100], когда мягкая клавиатура отображается 43% (на портрете) и 58% (в ландшафте); и когда мягкая клавиатура скрыта 73% (на портрете) и 139% (в ландшафте) соответственно.

Так что я сделал отключить функцию обратного вызова, когда выполняются следующие условия все верно:

  1. Устройство мобильная
  2. Процентное изменение ширины окна просмотра составляет менее 1%
  3. Процент изменение высоты просмотра более 35%

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

Вы можете увидеть образец кода здесь: https://github.com/obihill/restive.js/blob/master/restive.js#L4403. К сожалению, это часть большого набора кодов, но вы должны быть в состоянии понять основную идею, основанную на условностях.

Cheers.

+7

Можете ли вы поделиться код? – naturallyfoster

+0

Поскольку люди могут устанавливать пользовательские клавиатуры различного размера, это не на 100% надежнее (хотя это будет работать большую часть времени). Возможно, смешение его решения Андреаса Нормана работает? Если в мобильном браузере слушайте изменения ориентации. В противном случае прислушайтесь к размерам. – Job

2

У меня была аналогичная проблема. И мое решение было использовать событие изменения ориентации вместо случае изменения размера, который срабатывает, когда вы меньше всего этого ожидаете на Android: P

$(window).bind('orientationchange', function(e){ // Type pretty code here }); 

Источник: http://www.andreasnorman.com/dealing-androids-constant-browser-resizing/

+0

Спасибо. Это имеет большой смысл. Тем не менее, этот eventType выглядит как только для JQuery Mobile? –

+0

Извините, я забыл упомянуть, что ему нужен jQuery. Но вам нужен только обычный jQuery, чтобы он работал :) –

+0

О, хорошо! Я сделаю это. Благодарю. –

Смежные вопросы