瀏覽器版本偵測
navigator.appName 瀏覽器的正式名稱、編碼名稱,均傳回 Netscape
navigator.userAgentData
從 Chrome 101 開始,用戶代理字符串中可用的信息量將減少。要解決此問題,請將 navigator.userAgent、navigator.appVersion 和 navigator.platform 的用法替換為特徵檢測、漸進增強或遷移到 navigator.userAgentData。
但目前瀏覽器支持該功能似乎不完整。
navigator.userAgent
瀏覽器檢測 JavaScript Browser Detection
var browserVersion = function () { var UA = navigator.userAgent; var tMatch; var M = UA.match(/(OPERA|CHROME|SAFARI|FIREFOX|MSIE|TRIDENT(?=\/))\/?\s*(\d+)/i) || []; if (/TRIDENT/i.test(M[1])) { tMatch = /\brv[ :]+(\d+)/g.exec(UA) || []; return "IE " + (tMatch[1] || ""); } if (M[1] === "Chrome") { tMatch = UA.match(/\b(OPR|Edg)\/(\d+)/); if (tMatch != null) { return tMatch.slice(1).join(" ").replace("OPR", "Opera").replace("Edg", "Edge"); } } M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, "-?"]; if ((tMatch = UA.match(/version\/(\d+)/i)) != null) M.splice(1, 1, tMatch[1]); return M.join(" "); };
var browserName = browserVersion(); console.log(browserName);
簡易版本
var browserName = function () { const a = navigator.userAgent.toUpperCase(); var bName; if (a.indexOf("TRIDENT") != -1) { bName = "IE 11" } else if (a.indexOf("MSIE") != -1) { bName = "MSIE" } else if (a.indexOf("EDG/") != -1) { bName = "Edge" } else if (a.indexOf("OPR/") != -1) { bName = "OPERA" } else if (a.indexOf("CHROME") != -1) { bName = "Chrome" } else if (a.indexOf("FIREFOX") != -1) { bName = "Firefox" } else if (a.indexOf("SAFARI") != -1) { bName = "Safari" } else { bName = "NO !"; } return bName; }
navigator window 的特徵
appCodeName 瀏覽器內部編碼名稱
navigator.appCodeName IE, Firefox, Safari, Chrome 均傳回 Mozilla
appName 瀏覽器的正式名稱
navigator.appName IE10 以下傳回 Microsoft Internet Explorer, IE11 傳回 Netscape
Chrome, Firefox, Safari, Opera 均傳回 Netscape
appVersion 瀏覽器的版本
navigator.appVersion 傳回格式不太一樣
platform 瀏覽器的平台
navigator.platform 傳回 Win32;IE 64-bit 傳回 Win64
cookieEnabled 瀏覽器的 cookie 是否啟動
navigator.cookieEnabled 傳回瀏覽器的 cookie 是否啟動(布林值) true/false
Internet Explorer 11 修改了瀏覽器的 user agent,原來的識別碼「MSIE」不見了,參考 使用者代理字串變更
例如以 Windows 10 的 IE11 顯示
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0;... rv:11.0) like Gecko
以 rv 來判斷 IE11的版本。
var rv; var ua = navigator.userAgent; if (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(ua) != null) { rv = parseFloat(RegExp.$1); } else { rv = -1; }