幾天前,瀏覽器家族有剛誕生了一位小王子,就是Google推出的Chrome瀏覽器。由于Chrome出生名門(mén),盡管他還是個(gè)小家伙,沒(méi)有人敢小看他。以后,咱們常說(shuō)瀏覽器的“四大才子”就得改稱為“五朵金花”了。
在網(wǎng)站前端開(kāi)發(fā)中,瀏覽器兼容性問(wèn)題本已讓我們手忙腳亂,Chrome的出世不知道又要給我們添多少亂子。瀏覽器兼容性是前端開(kāi)發(fā)框架要解決的第一個(gè)問(wèn)題,要解決兼容性問(wèn)題就得首先準(zhǔn)確判斷出瀏覽器的類型及其版本。
JavaScript是前端開(kāi)發(fā)的主要語(yǔ)言,我們可以通過(guò)編寫(xiě)JavaScript程序來(lái)判斷瀏覽器的類型及版本。JavaScript判斷瀏覽器類型一般有兩種辦法,一種是根據(jù)各種瀏覽器獨(dú)有的屬性來(lái)分辨,另一種是通過(guò)分析瀏覽器的userAgent屬性來(lái)判斷的。在許多情況下,值判斷出瀏覽器類型之后,還需判斷瀏覽器版本才能處理兼容性問(wèn)題,而判斷瀏覽器的版本一般只能通過(guò)分析瀏覽器的userAgent才能知道。
我們先來(lái)分析一下各種瀏覽器的特征及其userAgent。
IE
只有IE支持創(chuàng)建ActiveX控件,因此她有一個(gè)其他瀏覽器沒(méi)有的東西,就是ActiveXObject函數(shù)。只要判斷window對(duì)象存在 ActiveXObject函數(shù),就可以明確判斷出當(dāng)前瀏覽器是IE。而IE各個(gè)版本典型的userAgent如下:
代碼如下:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)
其中,版本號(hào)是MSIE之后的數(shù)字。
Firefox
Firefox中的DOM元素都有一個(gè)getBoxObjectFor函數(shù),用來(lái)獲取該DOM元素的位置和大小(IE對(duì)應(yīng)的中是 getBoundingClientRect函數(shù))。這是Firefox獨(dú)有的,判斷它即可知道是當(dāng)前瀏覽器是Firefox。Firefox幾個(gè)版本的 userAgent大致如下:
代碼如下:
Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12
其中,版本號(hào)是Firefox之后的數(shù)字。
Opera
Opera提供了專門(mén)的瀏覽器標(biāo)志,就是window.opera屬性。Opera典型的userAgent如下:
代碼如下:
Opera/9.27 (Windows NT 5.2; U; zh-cn)
Opera/8.0 (Macintosh; PPC Mac OS X; U; en)
Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0
其中,版本號(hào)是靠近Opera的數(shù)字。
Safari
Safari瀏覽器中有一個(gè)其他瀏覽器沒(méi)有的openDatabase函數(shù),可做為判斷Safari的標(biāo)志。Safari典型的userAgent如下:
代碼如下:
Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13
Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3
|
新聞熱點(diǎn)
疑難解答
圖片精選