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


当我正在显示iPhone浏览器中的地址栏时,我试图以面向未来且与设备无关的方式检测。这是显示在顶部的工具栏,用于显示URL。它可以通过调用隐藏:

window.scrollTo(0, 0)

我想做的是检测它何时被显示(从而减少可用的观看空间)并设置一个计时器以便在大约一秒钟之后再次隐藏它。比这更频繁,它会非常烦人,因为用户将无法访问地址栏。

我试过检查 window.pageYOffset不幸的是,如果url栏的任何部分可见,则返回零。

一世  想要对iPhone上的任何尺寸进行硬编码,并根据当前视口大小检查这些尺寸。它太脆弱了。

有人知道解决方案吗?


4115
2017-08-19 17:00


起源

我不清楚这个问题。检测页面加载,或检查setInterval,并在X时间后隐藏它,但如果用户选择,则给用户足够的时间输入新的URL?请详细说明。 - donohoe


答案:


window.innerHeight 物业是你正在寻找的。这是屏幕上实际内容的高度。当顶部的工具栏可见时,它显着减少,因为内容的空间较小。有一个小问题,我似乎无法弄清楚我的iPhone 4 - window.innerHeight有时在屏幕的某些滚动位置返回3个像素。

我已经为您设置了一个示例,它或多或少地提出了您的要求,至少应该让您开始:

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


11
2017-08-19 17:50



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