使用者代理檢測

此方法獲取使用者代理並解析它以查詢瀏覽器。瀏覽器名稱和版本通過正規表示式從使用者代理中提取。基於這兩個,返回 <browser name> <version>

使用者代理匹配程式碼之後的四個條件塊旨在解釋不同瀏覽器的使用者代理的差異。例如,在 Opera 的情況下,由於它使用 Chrome 渲染引擎 ,因此還有一個忽略該部分的步驟。

注意,該方法可以容易地被使用者欺騙。

navigator.sayswho= (function(){
    var ua= navigator.userAgent, tem,
    M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
    if(/trident/i.test(M[1])){
        tem=  /\brv[ :]+(\d+)/g.exec(ua) || [];
        return 'IE '+(tem[1] || '');
    }
    if(M[1]=== 'Chrome'){
        tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
        if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
    }
    M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
    if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
    return M.join(' ');
})();

感謝肯納貝克