iOS Chrome检测

56

我使用JavaScript代码

if( (Android|webOS|iPhone|iPad|iPod|BlackBerry).test(navigator.userAgent) ) {}

用于移动设备检测,但无法检测到iOS上的Chrome。有没有办法检测它?谢谢。


为什么你需要这样做? - Blender
我需要这个用于仅在桌面上可见的特殊视觉效果。 - cr1msaun
1
检测浏览器是否支持触摸,并将类应用于“body”元素。Modernizr可以实现此功能。 - Blender
1
人们对这种做法过于敏感了。我正在使用它,以便我们可以向用户提供有关如何启用 cookie 的特定于浏览器的说明。这是完全有效的,除非这些说明通过 JavaScript window 属性变得可访问(可能永远不会),否则它仍然是完全有效的。 - andrewb
4个回答

140
根据Google开发者文档,UA字符串如下所示:
Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3

在这方面与iOS Safari不同的是,它使用CriOS而不是Version。因此,它会显示:

if(navigator.userAgent.match('CriOS'))

应该这样做。


2
你可以使用浏览器嗅探来解决特定的浏览器错误。 - Yuji 'Tomita' Tomita
17
因为Facebook的登录系统将iOS上的Chrome视为“不受支持的浏览器”,所以我必须使用它。但无法在其中进行功能检测。 - Soviut
7
Chrome在iOS上不支持摄像头访问,而Safari支持。这是检测Chrome在iOS上的一个非常具体的原因。 - jmc
3
即使Safari支持ServiceWorkers,但iOS上的Chrome也不支持。苹果公司决定压制这个功能。 - Martin Joiner
最近情况有所变化,我刚刚使用iOS上的Chrome将我的网页应用(LexLuv.com)添加到主屏幕上。所以我在这里的原因是:以前我告诉Safari用户如何操作,而对于Chrome用户则是“抱歉,苹果很刻薄,不允许你这样做。”现在,我需要为Chrome用户展示一组不同的操作指南,这可能与下一个浏览器不同。因此,我需要具体区分Safari与Chrome以及其他iOS浏览器,而不仅仅是Safari与其他浏览器。 - undefined
显示剩余3条评论

18

如果你只想要简单的是/否答案:

if(/CriOS/i.test(navigator.userAgent) &&
/iphone|ipod|ipad/i.test(navigator.userAgent)){
    return true;
}else{
    return false;
}

它可以简化为return /CriOS/i.test(navigator.userAgent) && /iphone|ipod|ipad/i.test(navigator.userAgent) - Tomáš Kudláč

-3

也许你可以尝试:

var os = navigator.platform;

然后根据你的结果相应地处理操作系统变量。
你还可以循环遍历导航器对象的每个对象,以帮助你更熟悉这些对象。
<script type="text/javascript">
for(var i in navigator){
    document.write(i+"="+navigator[i]+'<br>');
}
</script>

如在此答案中所发现: 使用jQuery/Javascript检测操作系统而无需插件?


1
这不解决OP所概述的特定场景,即在iOS上检测Chrome应用程序。 - Richard J. Ross III

-5

您可以使用51Degrees的免费云解决方案获取此信息。作为免费云服务的一部分,您可以访问BrowserName属性,其中包括iOs的Chrome。

以下是一些示例代码。您可以通过访问此处的商店页面https://51degrees.com/products/store/rvdsfcatid/cloud-device-detection-7来获取免费的云密钥。

<!DOCTYPE html>
<html>
<body>
<p id="id01"></p>
<script>
var xmlhttp = new XMLHttpRequest();
<!-- Insert Cloud key here. -->
var key = "Licence Key"
<!-- Receives UserAgent from clients connection. -->
var ua = window.navigator.userAgent;

<!-- Lists the properties required. -->
var url = ("https://cloud.51degrees.com/api/v1/"+key+"/match?user-agent="+ua+"&Values=\
    BrowserName");

<!-- Parses the JSON object from our cloud server and returns values. -->
xmlhttp.onreadystatechange = function(){
    if ( xmlhttp.readyState == 4 && xmlhttp.status == 200){
        var match = JSON.parse(xmlhttp.responseText);
        var text = ""
        document.getElementById("id01").innerHTML=\
        "UserAgent:"+ua+"</br>"+
        "BrowserName:"+match.Values.BrowserName;
    }
}       
<!-- Sends request to server. -->
xmlhttp.open("GET", url, true);
xmlhttp.send();     
</script>
</body>
</html>

如果您想了解如何使用JavaScript Cloud API,您可以在此处查看更多教程https://51degrees.com/Developers/Documentation/APIs/Cloud-API/JavaScript-Cloud

声明:我在51Degrees工作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接