如何知道移动设备是否显示桌面?

2024-01-12

我见过很多问题 https://stackoverflow.com/a/3540295/1408137询问如何检测设备是否是移动设备。一般来说,它们分为三类:

  1. 检查屏幕尺寸/视口
  2. 检查用户代理
  3. 使用库,例如现代化 http://modernizr.com/解决浏览器功能。

在实施了我能做的事情之后,我仍然遇到了一种我从未见过的情况,也从未被问过或解决过;在许多移动浏览器上,都有“请求桌面站点”(Chrome)、“桌面模式”(Dolphin) 或“桌面视图”(HTC Sense)。

我选择了上面的策略#1,除非在桌面模式下查看页面,否则该策略有效。实现#2 有缺点(欺骗、未编目代理等)。

有没有可靠的(跨浏览器)方法来检测桌面模式在带有 Javascript 的移动浏览器上? jQuery 或其他库都可以,但它应该基于功能检测,而不是用户代理数组。


基于@Shurvir森的答案,我缩小了这种方法实际所需的代码范围,没有任何第三方代码:

function isDesktopMode() {
    return window.innerWidth > screen.availWidth;
}

returns true, if

  • 移动设备有桌面模式=打开
  • Desktop设备有浏览器窗口跨越多个屏幕

returns false, if

  • 移动设备有桌面模式=关闭
  • 移动设备有桌面模式=关闭和浏览器中弹出视图
  • Desktop设备有全屏浏览器 window
  • Desktop设备有缩小浏览器尺寸 window
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何知道移动设备是否显示桌面? 的相关文章

随机推荐