javascript
javascript关于检测浏览器和操作系统的问题
1.方法學:
最好是檢測瀏覽器的最小版本,這樣才不會當版本升級之后不斷添加新的內容進去。
理想的方式:
if(isMinIE5){
//code
}
直接檢查準確的版本的缺點:
if(isMinIE5||isIE6){
//code
}
但是當版本升級之后加入升級到版本10:
if(isMinIE5||isIE6||isIE7||isIE8||isIE9||isIE10){
//code
}
相對于直接檢測瀏覽器的最小版本更麻煩
2.具體的步奏以及注釋:(user-agent方法)
var sUserAgent = navigator.userAgent;??????????????????????????????????????????????????????????? ?//將user-agent字符串保存到本地變量之中去
var fAppVersion = parseFloat(navigator.appVersion);???????????????????????????????????? //獲得本地瀏覽器的版本
function compareVersions(sVersion1, sVersion2) {??????????????//用split()方法將兩個版本號轉換為數組,用 "."作為字符的分隔符
??? var aVersion1 = sVersion1.split(".");
??? var aVersion2 = sVersion2.split(".");
??
??? //保證兩個版本的各個數字的長度也一樣,否則在較短的一個版本末尾添加0至兩個版本的長度相等
??? if (aVersion1.length > aVersion2.length) {???????????
??????? for (var i=0; i < aVersion1.length - aVersion2.length; i++) {
??????????? aVersion2.push("0");
??????? }
??? } else if (aVersion1.length < aVersion2.length) {
??????? for (var i=0; i < aVersion2.length - aVersion1.length; i++) {
??????????? aVersion1.push("0");
??????? }??
??? }
???//比較兩個版本的大小,版本1大于版本2返回1,反之,返回-1,相等返回0
??? for (var i=0; i < aVersion1.length; i++) {
??????? if (aVersion1[i] < aVersion2[i]) {
??????????? return -1;
??????? } else if (aVersion1[i] > aVersion2[i]) {
??????????? return 1;
??????? }??
??? }
??
??? return 0;
}
?
//檢測Opera瀏覽器的版本
var isOpera = sUserAgent.indexOf("Opera") > -1;
var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false;
if (isOpera) {
??? var fOperaVersion;
??? if(navigator.appName == "Opera") {
??????? fOperaVersion = fAppVersion;???? //Opera沒有偽裝的情況
??? } else {
??????? var reOperaVersion = new RegExp("Opera (//d+//.//d+)");
??????? reOperaVersion.test(sUserAgent);
??????? fOperaVersion = parseFloat(RegExp["$1"]);???????//利用正則表達式判斷偽裝之后的真正版本號
??? }
??? isMinOpera4 = fOperaVersion >= 4;
??? isMinOpera5 = fOperaVersion >= 5;
??? isMinOpera6 = fOperaVersion >= 6;
??? isMinOpera7 = fOperaVersion >= 7;
??? isMinOpera7_5 = fOperaVersion >= 7.5;
}
var isKHTML = sUserAgent.indexOf("KHTML") > -1
????????????? || sUserAgent.indexOf("Konqueror") > -1
????????????? || sUserAgent.indexOf("AppleWebKit") > -1;
?
//檢測Safari瀏覽器的版本
var isMinSafari1 = isMinSafari1_2 = false;
var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false;
if (isKHTML) {
??? isSafari = sUserAgent.indexOf("AppleWebKit") > -1;
??? isKonq = sUserAgent.indexOf("Konqueror") > -1;
??? if (isSafari) {
??????? var reAppleWebKit = new RegExp("AppleWebKit///(//d+(?://.//d*)?)");
??????? reAppleWebKit.test(sUserAgent);
??????? var fAppleWebKitVersion = parseFloat(RegExp["$1"]);
??????? isMinSafari1 = fAppleWebKitVersion >= 85;
??????? isMinSafari1_2 = fAppleWebKitVersion >= 124;
??? } else if (isKonq) {
??????? var reKonq = new RegExp("Konqueror///(//d+(?://.//d+(?://.//d)?)?)");
??????? reKonq.test(sUserAgent);
??????? isMinKonq2_2 = compareVersions(RegExp["$1"], "2.2") >= 0;
??????? isMinKonq3 = compareVersions(RegExp["$1"], "3.0") >= 0;
??????? isMinKonq3_1 = compareVersions(RegExp["$1"], "3.1") >= 0;
??????? isMinKonq3_2 = compareVersions(RegExp["$1"], "3.2") >= 0;
??? }
??
}
?
//檢測IE瀏覽器的版本
var isIE = sUserAgent.indexOf("compatible") > -1
?????????? && sUserAgent.indexOf("MSIE") > -1
?????????? && !isOpera;
?????????
var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIE6 = false;
if (isIE) {
??? var reIE = new RegExp("MSIE (//d+//.//d+);");
??? reIE.test(sUserAgent);
??? var fIEVersion = parseFloat(RegExp["$1"]);
??? isMinIE4 = fIEVersion >= 4;
??? isMinIE5 = fIEVersion >= 5;
??? isMinIE5_5 = fIEVersion >= 5.5;
??? isMinIE6 = fIEVersion >= 6.0;
}
?
//檢測Moz瀏覽器的版本
var isMoz = sUserAgent.indexOf("Gecko") > -1
??????????? && !isKHTML;
var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false;
if (isMoz) {
??? var reMoz = new RegExp("rv:(//d+//.//d+(?://.//d+)?)");
??? reMoz.test(sUserAgent);
??? isMinMoz1 = compareVersions(RegExp["$1"], "1.0") >= 0;
??? isMinMoz1_4 = compareVersions(RegExp["$1"], "1.4") >= 0;
??? isMinMoz1_5 = compareVersions(RegExp["$1"], "1.5") >= 0;
}
?
轉載于:https://www.cnblogs.com/lala314/p/5023233.html
總結
以上是生活随笔為你收集整理的javascript关于检测浏览器和操作系统的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android设置Settings:预读
- 下一篇: iOS---搜索功能