【发布时间】:2012-08-31 05:10:08
【问题描述】:
我正在开发一个响应式网站,当用户在移动设备上浏览时,我被要求将我们网站上的任何免费电话号码交换为固定电话号码。使用 Modernizr 库(或任何其他库)检测用户是否在移动设备上最可靠的方法是什么?
我知道 Modernizr.touch 和 Modernizr.geolocation。当这两者结合在if(Modernizr.touch && Modernizr.geolocation) 声明中时,它们可以很好地指示您是否在移动设备上,但是 iPad 将使这两个属性都成立。我不愿意测试设备尺寸,因为移动设备越来越大!
以前有人解决过这个问题吗?
【问题讨论】:
-
严格来说你无法确定。即使是用户代理字符串也是有问题的,尤其是因为公司每月推出大约一百万个新手机型号。 (无论如何,很多人都会将 iPad 称为移动设备 :-)
-
我认为 Modernizr 试图明确阻止这种嗅探,所以他们可能没有实现方法。但是我可以看到,在你的情况下,你有一个理由,所以你最好的选择可能是使用
navigator.userAgent。 -
啊,我觉得特征检测方法可能是用这个:stackoverflow.com/questions/5196833/…
-
@Pointy 你是对的,iPad 可能是移动设备。我不希望 iPad 通过测试的原因是你不太可能从它那里打电话。用户更有可能坐在家里,他们希望看到免费电话号码,以便他们可以在手机上拨打它。
-
现在地理定位在许多桌面浏览器中都是正确的。他们有一个测试套件的链接,您可以在其中查看选项是否已关闭/打开。 (modernizr.github.io/Modernizr/test/index.html) 我检查了我的 Mac Mini Safari、Chrome、Firefox 和 Opera。他们都将地理位置设置为 true。
标签: javascript modernizr browser-feature-detection