通过PHP检测原生/股票Android浏览器用户代理字符串

时间:2013-04-22 16:54:06

标签: android jquery-mobile mobile webkit css-transitions

我在本机/股票Android 4.1浏览器上收到了很多的JavaScript错误,我想通过PHP检测用户代理字符串。

我使用Mobile_Detect库检查操作系统,设备和浏览器,但它不支持检测原生Android浏览器。

有关此主题的SO上有很多帖子,但似乎没有答案。

我收到很多错误说明:

Cannot set property 'webkitTransitionDelay'
Cannot set property 'webkitTransform'

...所以我想为这个浏览器切换jQuery Mobile页面转换关闭 - 但我需要能够先检测它。

有没有办法检测到它?我必须强调它不是我想要检测的操作系统,它是本机浏览器(也称为Android)。

1 个答案:

答案 0 :(得分:0)

我正在使用以下内容:

(preg_match('/^Mozilla\/5\.0.*Android\s[12]\..*\sMobile/i', $_SERVER['HTTP_USER_AGENT']) 
    && !preg_match('/\sChrom/i', $_SERVER['HTTP_USER_AGENT']))

在较旧的Android平台(1.x或2.x)(don't support SVG)上匹配Android浏览器。

  • 'Chrom'排除'Chrome'和'Chromium'(后者可能不存在)
  • Firefox目前不包含Android版本,这意味着它与上面没有正面匹配。如果它开始添加Android版本号
  • ,我在下面添加了明确的排除项

一些测试字符串:

较旧的Android浏览器

Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; SAMSUNG GT-I9100/I9100BUKJ3 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Android上的Chrome

Mozilla/5.0 (Linux; Android 4.1.2; GT-I9100 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36

Android上的Firefox

Mozilla/5.0 (Android; Mobile; rv:26.0) Gecko/26.0 Firefox/26.0

Android上的Opera Mini

Opera/9.80 (Android; Opera Mini/7.5.33361/34.788; U; en) Presto/2.8.119 Version/11.10 Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; GT-I9100 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

任何版本的Android浏览器+不包括Firefox:

(preg_match('/^Mozilla\/5\.0.*Android\s\d\..*\sMobile/i', $_SERVER['HTTP_USER_AGENT']) 
    && !preg_match('/\sChrom/i', $_SERVER['HTTP_USER_AGENT'])
    && !preg_match('/\sFirefox/i', $_SERVER['HTTP_USER_AGENT']))

这与使用的测试用户代理一样好,所以请在评论中自行贡献!