原生js判断操作系统和浏览器版本

2019-11-13 15:59:34 浏览数 (1)

背景

在诸如博客、论坛等系统的评论中,我们可以看见不少的网站都有显示发表评论的人的操作系统版本和浏览器版本。

实现

这里我们使用纯js方法来实现获取这两者的方法。

实现原理很简单

浏览器都会带一个User-Agent的header信息,此信息中就携带一些操作系统和浏览器的版本,我们只需添加一些正则或者一些方法来匹配即可。

获取操作系统版本
代码语言:javascript复制
function getOS() {
    let sUserAgent = navigator.userAgent;
    let isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
    let isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
    if (isMac) return "Mac";
    let isUnix = (navigator.platform == "X11") && !isWin && !isMac;
    if (isUnix) return "Unix";
    let isLinux = (String(navigator.platform).indexOf("Linux") > -1);
    if (isLinux) return "Linux";
    if (isWin) {
        let isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;
        if (isWin2K) return "Win2000";
        let isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 || sUserAgent.indexOf("Windows XP") > -1;
        if (isWinXP) return "WinXP";
        let isWin2003 = sUserAgent.indexOf("Windows NT 5.2") > -1 || sUserAgent.indexOf("Windows 2003") > -1;
        if (isWin2003) return "Win2003";
        let isWinVista = sUserAgent.indexOf("Windows NT 6.0") > -1 || sUserAgent.indexOf("Windows Vista") > -1;
        if (isWinVista) return "WinVista";
        let isWin7 = sUserAgent.indexOf("Windows NT 6.1") > -1 || sUserAgent.indexOf("Windows 7") > -1;
        if (isWin7) return "Win7";
        let isWin10 = sUserAgent.indexOf("Windows NT 10") > -1 || sUserAgent.indexOf("Windows 10") > -1;
        if (isWin10) return "Win10";
    }
    return "other";
}
获取浏览器
代码语言:javascript复制
function getBrowse() {
    let browser = {};
    let userAgent = navigator.userAgent.toLowerCase();
    let s;
    (s = userAgent.match(/msie ([d.] )/)) ? browser.ie = s[1] : (s = userAgent.match(/firefox/([d.] )/)) ? browser.firefox = s[1] : (s = userAgent.match(/chrome/([d.] )/)) ? browser.chrome = s[1] : (s = userAgent.match(/opera.([d.] )/)) ? browser.opera = s[1] : (s = userAgent.match(/version/([d.] ).*safari/)) ? browser.safari = s[1] : 0;
    let version = "";
    if (browser.ie) {
        version = 'IE '   browser.ie;
    }
    else {
        if (browser.firefox) {
            version = 'Firefox';
            // version = 'firefox '   browser.firefox;
        }
        else {
            if (browser.chrome) {
                version = 'Chrome';
                // version = 'chrome '   browser.chrome;
            }
            else {
                if (browser.opera) {
                    version = 'Opera';
                    // version = 'opera '   browser.opera;
                }
                else {
                    if (browser.safari) {
                        version = 'Safari';
                        // version = 'safari '   browser.safari;
                    }
                    else {
                        version = '未知浏览器';
                    }
                }
            }
        }
    }
    return version;
}

效果

0 人点赞