使用Modernizr检测移动设备的最可靠方法是什么?

时间:2012-09-06 11:30:31

标签: javascript modernizr browser-feature-detection

我正在开发一个响应式网站,当用户在移动设备上浏览时,我被要求将我们网站上的任何免费电话号码交换到固定电话号码。使用Modernizr库(或任何其他库)检测用户是否在移动设备上的最可靠方法是什么?

我知道Modernizr.touch和Modernizr.geolocation。当两者合并为if(Modernizr.touch && Modernizr.geolocation)语句时,它们是您是否在移动设备上的良好指标,但iPad将使这两个属性成立。我不愿意测试设备尺寸,因为移动设备越来越大了!

以前有人解决过这个问题吗?

4 个答案:

答案 0 :(得分:3)

使用Modernizr API方法Modernizr.mq(str)

示例:

Modernizr.mq('only all and (max-width: 400px)')

答案 1 :(得分:2)

我在我的网站上使用这个PHP库:http://code.google.com/p/php-mobile-detect/

我建议在JavaScript库中使用它,因为这意味着在移动设备上执行的处理更少,并且如果没有针对多个设备的条件语句,您的网页代码会更加清晰。

警告(如果你想称之为)是你有两个版本的网站需要维护。我自己并没有把这看作是一个问题,尽管我在权衡维护带有条件语句的网页时决定要显示哪些内容。我的根目录中有一个桌面文件夹和一个移动文件夹。

我只是使用isMobile方法并忽略其余大部分方法,但如果您愿意,可以使用它来过滤和定位特定的设备类型。

E.g。用法:

 // Include the mobile detection file.
 require('Mobile_Detect.php');

 // Create new mobile detect object.
 $detect = new Mobile_Detect();
 // Create new browser object
 $browser = new Browser();
 // Check if the client is using a mobile device.
 $mobile = $detect->isMobile();

 ...

 if($mobile) {
     //Load mobile site version
     require('Mobile\\index.html');
 } else {
     //Load desktop site version
     require('Desktop\\index.html');
 }

在您的情况下,如果只是您想要更改的数字,JavaScript可能是更好的解决方案。这个答案可能更适合那些希望开发适合移动设备的整个网站的人。

答案 2 :(得分:1)

正在寻找类似的东西,只是尝试了这一点,乍一看似乎工作正常。

http://detectmobilebrowsers.com/

答案 3 :(得分:0)

我知道我参加派对的时间有点晚了,但正如你所说的那样,使用ASP,基于browscap.ini的检查可以专门用于ASP。