**判斷原理:**?
JavaScript是前端開發的主要語言,我們可以通過編寫JavaScript程序來判斷瀏覽器的類型及版本。JavaScript判斷瀏覽器類型一般有兩種辦法,一種是根據各種瀏覽器獨有的屬性來分辨,另一種是通過分析瀏覽器的userAgent屬性來判斷的。在許多情況下,值判斷出瀏覽器類型之后,還需判斷瀏覽器版本才能處理兼容性問題,而判斷瀏覽器的版本一般只能通過分析瀏覽器的userAgent才能知道。?
**瀏覽器類型**?
⑴瀏覽器特有屬性?
⑵根據userAgent?
瀏覽器版本?
⑴根據userAgent?
**對于手機瀏覽器判斷**?
1.如何判斷是否為移動終端 利用正則match,?
匹配navigator.userAgent是否含有字符串AppleWebKit*****Mobile?
安卓qq瀏覽器HD版 只有AppleWebKit?
2手機語言版本的判斷?
使用navigator.browserLanguage 便可得出windows phone語言版本,?
當然可惡的小小手機語言版本也有兼容性的差異,兼容Mozilla,以及AppleWebKit內核的瀏覽器訪問其語言版本,它會列出 navigator.language?
CODE:?
復制代碼?代碼如下:
?
var browser={?
versions:function(){?
var u = navigator.userAgent, app = navigator.appVersion;?
return { //移動終端瀏覽器版本信息?
trident: u.indexOf('Trident') > -1, //IE內核?
presto: u.indexOf('Presto') > -1, //opera內核?
webKit: u.indexOf('AppleWebKit') > -1, //蘋果、谷歌內核?
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐內核?
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否為移動終端?
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios終端?
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android終端或uc瀏覽器?
iPhone: u.indexOf('iPhone') > -1 , //是否為iPhone或者QQHD瀏覽器?
iPad: u.indexOf('iPad') > -1, //是否iPad?
webApp: u.indexOf('Safari') == -1 //是否web應該程序,沒有頭部與底部?
};?
}(),?
language:(navigator.browserLanguage || navigator.language).toLowerCase()?
}?
document.writeln("語言版本: "+browser.language);?
document.writeln(" 是否為移動終端: "+browser.versions.mobile);?
document.writeln(" ios終端: "+browser.versions.ios);?
document.writeln(" android終端: "+browser.versions.android);?
document.writeln(" 是否為iPhone: "+browser.versions.iPhone);?
document.writeln(" 是否iPad: "+browser.versions.iPad);?
document.writeln(navigator.userAgent);?
?
比較特別的地方?
UC瀏覽器沒有安卓報頭,只返回:linux ,這里粗略的根據linux來判斷是安卓(前提必須滿足是移動終端,UC這點是滿足的)?
安卓QQ瀏覽器HD版檢測的結果是:mac, Safari
文章來源:http://www.bozhiyue.com/javascript/2016/0712/232992.html