javascript - 移动 Webkit : reliably detect viewable area in all situations?

标签 javascript dom mobile-webkit

简短版: 在我的移动网络应用程序中,我想始终检测屏幕的可视区域(例如,软键盘顶部(如果存在)和标题栏底部之间的空间),这样我就可以调整我的布局,不缩放,并始终保持页面在屏幕上完全可见。有什么可靠的方法可以做到这一点吗?


更长的版本: 在应用程序中,我正在抓取所有触摸事件并自行控制平移和缩放。控制栏固定在屏幕的顶部和底部,始终可见。我的视口(viewport)设置是:

    <meta name="viewport" content="width=device-width; initial-scale=1.0;
maximum-scale=1.0; user-scalable=no">

我的愿望是始终使我的页面布局适应浏览器窗口的可视区域,因此屏幕上不会出现任何内容。因此,当键盘出现或消失,或者方向发生变化时,我需要检测宽度和高度并相应地重新布局。

如果没有屏幕键盘,window.innerWidthwindow.innerHeight 就足够了。但是,当键盘出现时,事情变得古怪(仅在某些严格控制的条件下工作)。天堂禁止在键盘打开时方向发生变化。

DOM 中有什么可以告诉我我想要什么吗?我真的更愿意动态地解决这个问题,而不是将界面元素的大小硬连接到我的代码中,但如果没有其他方法,我会求助于它。

抱歉说得冗长,很难描述我经历过的所有怪事。我的测试主要在运行 3.2 的 iPad 和运行 4.1 的 iPhone 上进行;两者的行为一直不一致。

最佳答案

最接近您所追求的可能是 screen.availHeight,它显示屏幕高度减去标题栏。但是,即使使用 window.onresize 事件,这在您调出屏幕键盘或旋转屏幕时也不会改变。恐怕我想不出一种方法来考虑这一点。

关于javascript - 移动 Webkit : reliably detect viewable area in all situations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4082410/

相关文章:

javascript - 尝试随机创建数据数组时出现未捕获的类型错误

javascript - document.ready 未触发 - 除非其中包含 'alerts'

javascript - 移动 safari 中的弹出窗口问题

javascript - ANDROID WEBKIT : Select elements getting focus events, 但打不开!

javascript - 在 MathML 渲染中使用命名空间

javascript - 从 JS 的 ID 列表创建 var

javascript - 使用 DOM php 通过 Class 从 IMG 获取 SRC

javascript - 在 DOM 中创建的文本节点在浏览器中不可见

javascript - 使用 JavaScript 查找父元素的子元素

html - 如何使点击突出显示仅显示在父元素上,而不显示在子元素上?