Javascript 如何仅检测本机Android浏览器
检测安卓设备很容易,但我仅检测安卓本机浏览器时遇到问题。问题是Dolphin浏览器有一个几乎相同的用户代理字符串,我想知道他们是否使用本机浏览器Javascript 如何仅检测本机Android浏览器,javascript,jquery,android,jquery-mobile,Javascript,Jquery,Android,Jquery Mobile,检测安卓设备很容易,但我仅检测安卓本机浏览器时遇到问题。问题是Dolphin浏览器有一个几乎相同的用户代理字符串,我想知道他们是否使用本机浏览器 这可能吗?您只需测试用户代理字符串的几个部分,以确保您拥有默认的android浏览器: var nua = navigator.userAgent; var is_android = (nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 &&
这可能吗?您只需测试用户代理字符串的几个部分,以确保您拥有默认的android浏览器:
var nua = navigator.userAgent;
var is_android = (nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 && nua.indexOf('AppleWebKit') > -1);
您可以使用以下方法来确保在android中不匹配chrome,尽管现在在许多设备上,chrome被用作默认浏览器
var nua = navigator.userAgent;
var is_android = ((nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 && nua.indexOf('AppleWebKit') > -1) && !(nua.indexOf('Chrome') > -1));
编辑:
如果要防止区分大小写,可以使用以下方法:
var nua = navigator.userAgent.toLowerCase();
var is_android = ((nua.indexOf('mozilla/5.0') > -1 && nua.indexOf('android ') > -1 && nua.indexOf('applewebkit') > -1) && !(nua.indexOf('chrome') > -1));
您可以使用Javascript和useragent功能实现这一点。您需要做的是提出2个If请求: 首先检测设备类型:
If android, ios, mobile, ipad, iphone
Take this setting
现在,您可以根据需要发出if请求或case请求来检测浏览器的类型
If chrome, firefox, safari and so on
Take this setting
理论上就是这样:)我想你在寻找这个: Android本机浏览器未更新到534.30以上版本,因此您可以过滤到该版本并 Android UA字符串组合(上面我们可以假设它是一款Chrome浏览器) 以下是我的示例JavaScript代码:
If android, ios, mobile, ipad, iphone
Take this setting
(如果您需要特定的样式,我将使用下面的JS代码片段向主体添加一个类)
(一些Android设备报告“Android”,这就是我们需要小写对话的原因)在Galaxy S3上,我发现Chrome和本机浏览器都有“AppleWebkit”,所以我从我的条件语句中去掉了这一部分。我还添加了版本,因为它只显示在本机浏览器中。这对我来说就像
var ua = navigator.userAgent;
var isAndroidNative = ((ua.indexOf('Mozilla/5.0') > -1) && (ua.indexOf('Android') > -1) && !(ua.indexOf('Chrome') > -1) && (ua.indexOf('Version') > -1))
可能是我不这么认为的复制品?这是一个总体战略。这对于Android 2.X、3.X、4.X上的本机浏览器来说,您应该能够捕捉到用户代理,也许还有发行版。但和安卓一样,这看起来很容易配置。谢谢你的链接,这本书很有趣,但我认为它对我没什么帮助。这里面有关于海豚的东西,但它的准确性不足以帮助我们。遗憾的是,我认为在Android 2.x上的Dolphin和Android 2.x native之间没有用户代理方法来区分。我现在能想到的唯一办法是海豚头的高度实际上是本地人的两倍,所以我可以计算出来。你可以使用只有android支持的目标dpi媒体查询,但是它们已经被弃用了,所以这可能不是未来版本的最佳选择。即使是Android中的Chrome浏览器,这种情况也会变为现实。我有一个运行android 4.1.2的三星Galaxy S3,默认浏览器是android浏览器(不是chrome)。有时useragent返回AppleWebkit(kit上的小写字母),但失败:ua.indexOf('AppleWebkit')>-1。可能最好使用正则表达式而不是indexOf代码>
var是安卓=((nua.match(/Mozilla\/5\.0/gi)!==null和nua.match(/android/gi)!==null和nua.match(/AppleWebKit/gi)!==null和(nua.match(/Chrome/gi)!==null))代码>PS如何创建新行?两个空格不起作用:/这没有检测到三星Galaxy S5(4.4.2)的默认android浏览器。这只是检测一般的android,而不是android上可用的不同浏览器之间的差异(这正是最初的问题所寻找的)。如果版本是533.1类似于android GingerBread呢?但这会失败。与此同时,我发现这个问题没有明确的答案。请检查:@PeterM,谢谢你链接到这些幻灯片,你刚刚毁了我的一天;)是的,这是唯一正确的答案。所有其他人都认为UA中没有提到Chrome,这是不正确的。不幸的是,它在三星S5 Mini Android 4.4.2上不起作用,因为在使用Android默认浏览器时,用户代理字符串中有“Chrome”……而在三星Galaxy Note S3上没有“Version”字符串
var ua = navigator.userAgent;
var isAndroidNative = ((ua.indexOf('Mozilla/5.0') > -1) && (ua.indexOf('Android') > -1) && !(ua.indexOf('Chrome') > -1) && (ua.indexOf('Version') > -1))