1

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

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

关于这个主题有很多关于 SO 的帖子,但似乎没有回答。

我收到很多错误说明:

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

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

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

4

1 回答 1

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)(不支持 SVG )上匹配 Android 浏览器。

  • 'Chrom' 排除 'Chrome' 和 'Chromium' (后者可能不存在)
  • Firefox 目前不包含 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

安卓上的 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

安卓上的火狐

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']))

这仅与使用的测试用户代理一样好,因此请在评论中贡献您自己的!

于 2013-12-18T10:50:04.737 回答