检测iPhone浏览器中地址栏是否显示

14

我想以一种未来可靠且不依赖设备的方式,检测 iPhone 浏览器中地址栏是否正在显示。这是顶部工具栏,用于显示 URL 地址。它可以通过调用以下命令进行隐藏:

window.scrollTo(0, 0)

我想要做的是检测它被显示时(从而减少可用的查看空间),并设置一个计时器在一秒钟左右再次隐藏它。 如果频率更高,那么它将非常恼人,因为用户将无法到达地址栏。

我尝试检查 window.pageYOffset,不幸的是,如果URL栏的任何部分可见,它会返回零。

不想在iPhone上硬编码任何尺寸,并将其与当前视口大小进行比较。 它太脆弱了。

有人知道这里的解决方案吗?


我还不清楚问题所在。是在页面加载时检测,还是使用setInterval定期检查并在X时间后隐藏它,但要给用户足够的时间输入新的URL(如果他们选择这样做)?请详细说明。 - donohoe
1个回答

12

window.innerHeight属性是你要找的。它代表屏幕上实际内容的高度。当顶部工具栏可见时,这个值会显著减少,因为内容的空间更少。但在我的iPhone 4上有一个小问题 - 在某些滚动位置,window.innerHeight有时会少3个像素。

我为你设置了一个例子,基本上做了你所要求的事情,至少可以让你开始:

http://jsfiddle.net/rUSEb/show/light (在你的iPhone上测试一下)。


3
似乎与 iPhone 6 不兼容。但 jsfiddle 添加的“结果”栏会对显示/隐藏地址栏做出反应,因此检测似乎是可能的。 - Juha Syrjälä
“Result”栏使用position: fixed;,因此我认为它实际上并没有直接检测到地址栏的存在。 - Digital-Clouds
1
innerHeight/Width 也会受到缩放的影响,因此您可能会得到不可预测的结果。 - GreySage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接