简短版:在我的移动网络应用程序中,我想始终检测屏幕的可视区域(例如,软键盘顶部(如果存在)和标题栏底部之间的空间),所以我可以调整我的布局,无需缩放,并始终保持页面在屏幕上完全可见。有没有可靠的方法来做到这一点?
更长的版本:在应用程序中,我正在抓取所有触摸事件并自己控制平移和缩放。控制栏固定在屏幕的顶部和底部,始终可见。我的 veiwport 设置是:
<meta name="viewport" content="width=device-width; initial-scale=1.0;
maximum-scale=1.0; user-scalable=no">
我的愿望是始终使我的页面布局适应浏览器窗口的可视区域,因此没有任何东西会脱离屏幕。因此,当键盘出现或消失,或者方向发生变化时,我需要检测宽度和高度并相应地重新布局。
如果不是屏幕键盘,window.innerWidth和window.innerHeight就足够了。但是,当键盘出现时,事情就会变得古怪(仅在某些严格控制的条件下有效)。天堂禁止在键盘启动时改变方向。
DOM 中有什么可以告诉我我想要什么吗?我真的更愿意动态地解决这个问题,而不是将界面元素的大小硬连线到我的代码中,但如果没有其他方法,我会诉诸于此。
抱歉冗长,很难捕捉到我所经历的所有怪异。我的测试主要在运行 3.2 的 iPad 和运行 4.1 的 iPhone 上进行;两者的行为一直不一致。