前端开发中,经常需要判断浏览器或系统类型,以解决兼容性问题。
使用Javascript判断浏览器和操作系统类型是一件很容易的事情,但如何最全面、最简单的做出判断,是不容易的,Ext中的浏览器判断非常全面且简洁,包含了最新的IE8、Chrome浏览器、Air浏览的判断,下面是从Ext 2.2.1众摘录的代码,并添加了注释:
var ua = navigator.userAgent.toLowerCase();
var isStrict = document.compatMode == "CSS1Compat", // 是否定义DOCUMENT类型
isOpera = ua.indexOf("opera")>-1, // 是Opera
isChrome = ua.indexOf("chrome")>-1, //是Chrome
isSafari = !isChrome&&(/webkit|khtml/).test(ua), //是Safari
isSafari3 = isSafari&&ua.indexOf("webkit/5")! = -1, // Safari3
isIE = !isOpera&&ua.indexOf("msie")>-1, //IE6
isIE7 = !isOpera&&ua.indexOf("msie 7")>-1, // IE7
isIE8 = !isOpera&&ua.indexOf("msie 8")>-1, //IE8
isGecko = !isSafari&&!isChrome&&ua.indexOf("gecko")>-1, // Gecko内核
isGecko3 = isGecko&&ua.indexOf("rv:1.9")>-1, // Gecko3内核
isBorderBox = isIE&&!isStrict, // 使用盒模型
isWindows = (ua.indexOf("windows")! = -1||ua.indexOf("win32")! = -1), // 是Windows系统
isMac = (ua.indexOf("macintosh")! = -1||ua.indexOf("mac os x")! = -1), // 是MacOS系统
isAir = (ua.indexOf("adobeair")! = -1), // 是用Adobe Air浏览
isLinux = (ua.indexOf("linux")! = -1), // 是Linux系统
isSecure = window.location.href.toLowerCase().indexOf("https") === 0; // 是SSL浏览