Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅检测本机Android浏览器_Javascript_Jquery_Android_Jquery Mobile - Fatal编程技术网

Javascript 如何仅检测本机Android浏览器

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 &&

检测安卓设备很容易,但我仅检测安卓本机浏览器时遇到问题。问题是Dolphin浏览器有一个几乎相同的用户代理字符串,我想知道他们是否使用本机浏览器


这可能吗?

您只需测试用户代理字符串的几个部分,以确保您拥有默认的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))