从用户代理字符串中检测设备类型

时间:2014-12-14 22:17:45

标签: java browser user-agent

我正在尝试从用户代理字符串中检测“桌面”,“移动”和“平板电脑”。我需要的只是这三个粗略的类别。不需要品牌和设备名称。我的用户代理的一些示例是:

“Mozilla / 5.0(兼容; MSIE 10.0; Windows NT 6.1; WOW64; Trident / 6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0 ; .NET4.0C; .NET4.0E; InfoPath.3)“

“Mozilla / 5.0(Windows NT 5.1)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 38.0.2125.104 Safari / 537.36”

是否有任何现有的API可以做到这一点?

根据this article的最后一句,似乎在用户代理字符串中查找关键字“mobi”可以处理大多数情况。但这似乎太容易了......

2 个答案:

答案 0 :(得分:0)

您可以使用UADetector library来做到这一点。它具有自0.9.10版本以来添加的设备分类功能。

  

UADetector是一个库,可识别超过190种不同的桌面和移动浏览器以及130种其他用户代理,如Feed阅读器,电子邮件客户端和多媒体播放器。此外,还可以识别超过400个机器人,如BingBot,Googlebot或Yahoo Bot。

答案 1 :(得分:0)

我很好奇:为什么设备类型很重要?

不要试图嗤之以鼻,而是试图理解一个用例。

In Cordova you can check for this,但现在确定直接的HTML。我之前为iOS做过的。我需要这样做来检测我何时需要在Cordova应用程序的页面标题上添加20px的边距,因为iOS在几个版本之前进行了此更改。

我是这样做的:

    if (parseFloat(window.device.version) >= 7.0 ) {
        $allHeaders.css( "margin-top", "20px" );       
    }