我想在 Javascript 中检测当前是否显示智能应用横幅。我已经检查了 DOM,但没有横幅的证据。
问问题
3578 次
3 回答
5
这是一个老问题,但也许这对某人有用。我通过以下方式做到了这一点:
- 检测到 iOS 用户代理;
- 用于
window.matchMedia
通过媒体查询确定设备类型和方向; - 已检查
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 回答