9

我想在 Javascript 中检测当前是否显示智能应用横幅。我已经检查了 DOM,但没有横幅的证据。

4

3 回答 3

5

这是一个老问题,但也许这对某人有用。我通过以下方式做到了这一点:

  1. 检测到 iOS 用户代理;
  2. 用于window.matchMedia通过媒体查询确定设备类型和方向;
  3. 已检查window.innerHeight

在我的实验之后,我对不同设备的实验 window.innerHeight 值显示了横幅。您可以在下面找到它们:

  • iPhone 6 Plus 肖像:544px;
  • iPhone 6 Plus 横向:286px
  • iPhone 6 肖像:475px;
  • iPhone 6 横向:247px
  • iPhone 5 和 5S 肖像:376px;
  • iPhone 5 & 5S 横向:148px;
  • iPhone 2G、3G、4、4S、iPod Touch 1-4 代人像:288px
  • iPhone 2G、3G、4、4S、iPod Touch 1-4 代横向:148px.

希望这会对某人有所帮助。

于 2016-04-14T10:53:42.287 回答
2

虽然 Smart App Banner 没有出现在 DOM 中,但它确实将浏览器窗口的可用高度降低了 84 像素(这是我使用 IOS7 + iPhone5 得到的数字)。

我将使用 window.innerHeight 中的这个减少来确定是否显示 SmartBanner。

(我需要确定用户是 iPhone4 还是 iPhone5)

Mobile Safari 确实有其他影响 window.innerHeight 的位,但最多底部菜单(共享等)和顶部较大的地址栏将可用高度降低 69 像素(这也是我通过 Safari Web Inspector 得到的) .

于 2014-01-16T15:12:41.203 回答
2

如果您使用的是 jquery:

hasSmartBanner = window.innerHeight !== $(window).innerHeight();
于 2017-06-21T07:50:56.327 回答