【问题标题】:Detect if address bar is shown in iPhone browser检测地址栏是否显示在 iPhone 浏览器中
【发布时间】:2010-08-20 01:50:19
【问题描述】:

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

window.scrollTo(0, 0)

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

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

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

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

【问题讨论】:

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

标签: javascript iphone


【解决方案1】:

window.innerHeight 属性就是您要寻找的。这是屏幕上实际内容的高度。当顶部的工具栏可见时,它会明显减少,因为内容的空间更小。在我的 iPhone 4 上我似乎无法解决一个小问题 - window.innerHeight 有时会在屏幕的某些滚动位置返回少 3 个像素。

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

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

【讨论】:

  • 似乎不适用于 iPhone 6。但是 jsfiddle 添加的“结果”栏确实对显示/隐藏地址栏有反应。因此检测似乎是可能的。
  • “结果”栏使用position: fixed;,所以我不认为这实际上是直接检测地址栏的存在。
  • innerHeight/Width 也会受到缩放的影响,因此您可能会得到不可预知的结果。
猜你喜欢
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
相关资源
最近更新 更多