您如何在桌面和移动 Chrome 用户代理之间进行检测?

IT技术 javascript google-chrome browser-detection
2021-03-11 03:31:11

对于 Chrome 桌面扩展主页,我试图检测用户是在 Android 上使用 Chrome for Desktop 还是 Chrome for Mobile。目前,下面的脚本将 Android Chrome 标识为与桌面 chrome 相同。在桌面 Chrome 上,它应该显示“chrome”链接;但是,如果有人使用 Android 版 Chrome,它应该显示“移动其他”链接。

脚本:

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

Chrome Android 用户代理:

Mozilla/5.0 (Linux; <Android Version>; <Build Tag etc.>) AppleWebKit/<WebKit Rev> (KHTML, like Gecko) Chrome/<Chrome Rev> Mobile Safari/<WebKit Rev>
1个回答

问题是用户代理将始终拥有“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();
});
iOS 上的当前 Chrome 移动版本 (v43.*)Chrome在其用户代理字符串中没有。来自文档:“iOS 版 Chrome 中的 UA 与 Mobile Safari 用户代理相同,使用 CriOS/<ChromeRevision> 而不是 Version/<VersionNum>。”
2021-05-12 03:31:11