注釋都在代碼里面了。很詳細(xì)。
只判斷了IE 火狐 谷歌 因?yàn)槲覜]裝其他瀏覽器了,所以呵呵。當(dāng)然如果要判斷其他瀏覽器。基本代碼都是一樣的了。
復(fù)制代碼代碼如下:
(function(){
window.sys={};
var ua=navigator.userAgent.toLowerCase();
//首先我們來看一下3個(gè)瀏覽器都返回了什么看下面。
//ie ua=mozilla/4.0 (compatible; msie 8.0; windows nt 5.2; trident/4.0; qqpinyin 730; .net clr 1.1.4322)
//firefox ua=mozilla/5.0 (windows; u; windows nt 5.2; zh-cn; rv:1.9.2) gecko/20100115 firefox/3.6
//chrome ua=mozilla/5.0 (windows; u; windows nt 5.2; en-us) applewebkit/532.5 (khtml, like gecko) chrome/4.0.249.0 safari/532.5
//可以看出上面的瀏覽器 IE msie 8.0 firefox firefox/3.6 chrome chrome/4.0.249
//我們只要用正則找出字符串里面是能匹配這幾個(gè)關(guān)鍵地方就可以找出是哪個(gè)瀏覽器了。
//看下面正則 firefox 的正則表達(dá)式 /firefox//([/d/.]+)/
//firefox// 匹配了一個(gè) firefox/ 這樣一個(gè)字符
//([/d/.]+) ()表示需要捕獲匹配的字符。后面可以用[1]的方式來獲取版本號(hào)就是他的功勞了。
//[]表示把/d/.括起來當(dāng)成一個(gè)整體 沒別的意思
///d 匹配一個(gè)數(shù)字 /. 匹配一個(gè) . 加在一起就可以匹配 8. 這樣的東西了
//[]+ []外面還有個(gè)+ 他會(huì)把[] 里面原來匹配的東西重復(fù) 于是變成了這樣 8.8.8.8. 當(dāng)然這樣也可以 48.1.563
sys.firefox=ua.match(/firefox//([/d/.]+)/);
sys.ie=ua.match(/msie/s([/d/.]+)/);
//msie/s([/d/.]+)
// ie的就基本跟火狐一樣了 沒什么太大的區(qū)別
// msie 8.0 /s 就是匹配 msie和8.0 中間的一個(gè)空格
sys.chrome=ua.match(/chrome//([/d/.]+)/);
//chrome//([/d/.]+)
//跟火狐的一樣
})();
//使用
if(sys.firefox){
alert(true)
}else{
alert(false)
}
if(sys.ie[1]=="8.0"){
alert(true)
}else{
alert(false)
}
alert(sys.firefox);
alert(sys.ie);
alert(sys.chrome);
//只有當(dāng)前瀏覽器的sys才能使用[1]返回版本號(hào)
alert(sys.firefox[1]);
//alert(sys.ie[1]);
//alert(sys.chrome[1]);
我遇到一個(gè)問題。我看到高手有這樣寫的
firefox//([/d.]+)//高手的
firefox//([/d/.]+)//我的
//我很疑惑 到底這兩個(gè)有什么區(qū)別。我用很多STR 測(cè)試了。沒看出什么區(qū)別//難道[/d.]+ 跟 [/d/.]+一樣么?求高手解答。