当android软键盘处于活动状态时,防止视口大小调整网页大小

我正在为响应式网页设计开发一个Javascript / JQuery插件。 它有一个监视视口以进行更改的function,特别是resize和方向。 检测到更改时,将调用相应的回调函数。

但是,我刚注意到在Android上(特别是使用Google Galaxy Nexus上的股票浏览器),如果用户尝试使用软键盘,它会调整视口大小,从而触发回调函数。 这是我想要消除的行为。

有没有办法 – 通过Javascript – 禁用此行为或检测它,以便我可以更改代码库以适应它?!

到目前为止我看到的解决方案主要是Android App开发,我不确定它们是否适用于我的情况。

谢谢。

好吧,经过一些摆弄,我找到了解决问题的方法。

那么当显示/隐藏软键盘时会发生什么?! 在我的测试中, viewport width保持不变。 但是,当软键盘显示43% (纵向)和58% (横向)时, viewport height改变大小[ ((current - previous)/previous)*100 ]; 当软键盘分别隐藏73% (纵向)和139% (横向)时。

所以我做的是在满足以下条件时禁用回调函数:

  1. 该设备是移动的
  2. 视口宽度的百分比变化小于1%
  3. 视口高度的百分比变化大于35%

由于移动设备浏览器没有桌面上的resize句柄,我不相信会出现用户以自然方式模仿上述情况的情况。

您可以在此处查看代码示例: https : //github.com/obihill/restive.js/blob/master/restive.js#L4403 。 不幸的是,它是更大代码集的一部分,但你应该能够根据条件收集基本思想。

干杯。

我有类似的问题。 我的解决方案是使用方向更改事件而不是resize事件,当你最不希望它在android:P时触发

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

来源: http : //www.andreasnorman.com/dealing-androids-constant-browser-resizing/