|
由于Windows XP的補丁SP2,對IE6的安全性也做了很多的提升,使得有不少原來我們可以使用的功能,會變得很奇怪甚至歇菜掉:(。特別是彈出窗口、模態(tài)窗口和Popup窗口等受的影響相當(dāng)大。那么我能不能判斷用戶使用的IE6是普通IE6(IE6sp1)還是IE6+xp sp2呢? 下面是兩個比較典型的IE6瀏覽器UserAgent字段: 1、Windows XP + SP1 (NT 5.1) Connection: Keep-Alive Accept: */* Accept-Encoding: gzip, deflate Accept-Language: zh-cn Host: zhilee.aehk.com Referer: http://www.cnblogs.com/birdshome/archive/2005/03/11/113723.html User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)2、Windows 2003 + SP1 (NT 5.2) Connection: Keep-Alive Accept: */* Accept-Encoding: gzip, deflate Accept-Language: zh-cn Host: zhilee.aehk.com Referer: http://www.cnblogs.com/bluefee/archive/2005/03/28/127455.html User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322) UA-CPU: x86這兩個UA string和普通的UA string最大區(qū)別就是,里面多了一個"SV1"標志,這個是什么意思呢?SV1的本意是"Security Version 1",它就是用來專門標注使用IE6瀏覽器的用戶使用的操作系統(tǒng)是否是XPSP2或WS03SP1。 既然XPSP2和WS03SP1對IE6有影響,為什么不提升IE的版本號,而是單獨使用SVX標注呢?IE開發(fā)團隊是這么解釋的,他們說雖然這兩個操作系統(tǒng)的補丁對IE6的設(shè)置有影響,但是并沒有修改IE6本身的任何功能,比如呈現(xiàn)、DHTML和DOM等。所以這樣的一些安全設(shè)置不適合升級IE本身的版本號。 在后續(xù)的IE版本中,SVX標志可能會被移除,所以目前我們使用UA string檢測操作系統(tǒng)的SP版本,只是一個臨時的辦法。 var ua = navigator.userAgent; if ( ua.indexOf("SV1") != -1 ) { if ( ua.indexOf("NT 5.1") != -1 ) { // windows xp + sp2 } else if ( ua.indexOf("NT 5.2") != -1 ) { // windows 2003 + sp1 } else { // wrong user agent string } } |
|
|