正則表達式:
var rsys = /\b(windows|win32|macintosh|mac os x|adobeair|linux|unix)\b/; var rkn = /\b(opera|chrome|webkit|safari|msie|firefox|gecko)\b(\s*(version|rv:|\/)*(\d+(\.\d+)*))?/g;
准備:
var r = {}, ua = navigator.userAgent.toLowerCase();
代碼:
ua.replace(rsys, function (match, value) { var object = {
isWinSys: "win",
isMacSys: "mac",
isAirSys: "air",
isUnixSys: "unix",
isLinuxSys: "linux"
}; for (var i in object) { r[i] = value.indexOf(object[i]) > -1; } }); ua.replace(rkn, function (match, type, all, rv, version) {
//match:匹配內容,type:內核類型,all:匹配符以及版本號,rv:匹配符,version:版本號 r["is" + type.charAt(0).toUpperCase() + type.slice(1) + "Kn"] =
r["is" + type.charAt(0).toUpperCase() + type.slice(1) + "Bro"] = version || true; if (type === "safari") { if (/applewebkit\/4/.test(ua)) { r["isSafariKn"] = 2; } } });if (r.isChromeBro) { r.isSafariBro = false; } if (r.isFirefoxBro) { if (r.isChromeBro || r.isSafariBro || r.isMsieBro) { r.isFirefoxBro = false; } }
r.isWebkitBro = r.isGeckoBro = false;//修復
r.isBrowse32Bit = navigator.platform == "Win32";//是否為32位瀏覽器
r.isCompatMode = document.compatMode == "CSS1Compat";//是否處於兼容性模式
1、后綴說明:Kn(kernel:內核),Bro(browser:瀏覽器),Sys(System:系統)。
2、值說明:優先顯示版本號,若沒有檢測到對應的版本號,則默認為真。
3、已在Windows系統下,chrome、firefox、msie中測試通過。