这听起来有点太好了,所以请告诉我它是不是。
如果我只有一个移动网站的单一版本(没有变体 不同的设备,只有一个适用于所有手机的网站),它的可靠性 通过屏幕分辨率检测移动设备?
如果屏幕分辨率为<而且只是提供移动版本。比说400px。
注意:我的问题是假设启用了javascript。另外,我知道有 用户代理检测,但我想没有它。
答案 0 :(得分:4)
Javascript移动设备屏幕检测高度根本不可靠。问题是不同的浏览器使用不同数量的“chrome”,不同的OS版本对系统栏使用不同的高度。所有的检测机制都报告不可靠的高度(screen.height,window.outerHeight,window.innerHeight - etc等)
在所有操作系统的window.outerWidth上,宽度似乎最可靠。
在这里阅读最优秀的分析报告:
http://www.tripleodeon.com/2011/12/first-understand-your-screen/
答案 1 :(得分:3)
您需要考虑通过媒体查询提供不同的样式表。您可以使用查询来识别屏幕宽度,并仅为某些设备提供某些css。例如,此查询仅将iphone.css提供给标识为具有iphone典型尺寸的设备:
<link media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" rel="stylesheet" />
上有关于此主题的详细文章
请记住,并非所有设备都能识别媒体查询。如果您需要支持许多旧设备,如黑莓手机和翻盖手机,您应该采用上面的建议来使用UA检测 - 我知道如果您来自桌面开发世界会感觉不对,但实际上我们必须使用我们拥有的工具对我们而言,移动网络正在发展,但在很多方面仍然是一个新的视野。
答案 2 :(得分:1)
我来到这里是因为我有同样的想法和问题,以及类似的情况 - 网站已经需要JavaScript,我正在做一个适合所有人的移动网络应用程序,至少目前如此。我们的发布周期非常长 - 在测试和发布代码时,任何UA检测我的硬编码都会有些过时。由于此备用接口的目的是使其在较小的屏幕上工作,因此使用该测试似乎是有意义的。 然而,我不知道,我会选择多大的尺寸 - 我有一个预感移动设备不受特定屏幕尺寸的限制(即使按惯例)。我想我们必须决定主网页在什么时候不再起作用。
我可以理解其他人对此方法的犹豫,因为有时移动设备上的标准网站存在其他问题,而不仅仅是屏幕尺寸。但是,我认为这种检测有一个优势。如果您唯一的问题是屏幕尺寸,我认为这是一个很好的方法。
答案 3 :(得分:0)
对于那些确实在其移动设备上运行支持JavaScript的网络浏览器的用户而言,将此功能添加到您的网站可能不会有任何损害。对于那些没有的人,除了让他们在第一次加载时选择屏幕大小这样简单的东西之外,你能做些什么呢?也许是一个可能大小的简单下拉列表?
答案 4 :(得分:0)
这取决于你想要达到的目标。
如果设计不同设备类型的不同屏幕分辨率,则可以使用分辨率范围。
如果针对特定设备类型(手机,平板电脑等)进行设计并假设分辨率范围始终与单个设备类型相匹配,那么它最终会中断。
您在示例中使用了400px
阈值,Galaxy S8 +使用以下代码报告412x846
:
console.log("width: " + screen.width + ", height: " + screen.height);
设备分辨率每年都在变化,并且它们开始相互重叠。大型手机的分辨率高于小型平板电脑,大型平板电脑的分辨率高于某些台式机。
如果您只是希望它能够正常工作,或者您想要检测特定的手机,那么您可能会侥幸成功。
然而,仅使用屏幕分辨率来检测设备类型是不可靠的。