如何检测桌面和移动Chrome用户代理?

WoJ*_*oJo 19 javascript google-chrome browser-detection

对于Chrome桌面扩展主页,我正在尝试检测用户是否在Android上使用Chrome for Desktop或Chrome for Mobile.目前,下面的脚本将Android Chrome与Desktop chrome相同.在桌面Chrome上,它应该显示"chrome"链接; 但是,如果有人在Chrome for Android上,它应该显示"移动其他"链接.

脚本:

<script>$(document).ready(function(){
    var ua = navigator.userAgent;
    if (/Chrome/i.test(ua))
       $('a.chrome').show();

    else if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i.test(ua))
       $('a.mobile-other').show();

    else
       $('a.desktop-other').show();
  });</script>
Run Code Online (Sandbox Code Playgroud)

Chrome Android用户代理:

Mozilla/5.0 (Linux; <Android Version>; <Build Tag etc.>) AppleWebKit/<WebKit Rev> (KHTML, like Gecko) Chrome/<Chrome Rev> Mobile Safari/<WebKit Rev>
Run Code Online (Sandbox Code Playgroud)

imt*_*man 28

问题是用户代理将始终拥有"Chrome",无论是桌面版还是移动版.所以你必须先检查更具体的案例.

$(document).ready(function(){
    var ua = navigator.userAgent;

    if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i.test(ua))
       $('a.mobile-other').show();

    else if(/Chrome/i.test(ua))
       $('a.chrome').show();

    else
       $('a.desktop-other').show();
});
Run Code Online (Sandbox Code Playgroud)

  • 目前iOS上的Chrome移动版(v43.*)在其用户代理字符串中没有"Chrome".来自[文档](https://developer.chrome.com/multidevice/user-agent):"Chrome for iOS中的UA与Mobile Safari用户代理相同,使用CriOS/<ChromeRevision>而不是版本/ <VersionNum>". (2认同)