最近中文字幕大全|熟女少妇精品一区二区|国产网红主播精品一区|日本一区二区精品理论电影|欧洲少妇无码精品视频在线|久久国产精品永久免费网站|人妻无码久久一区二区免费麻豆|国产日韩欧美一区二区在线高清

十二年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號 掃一掃關(guān)注
小程序
tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

結(jié)合實(shí)例介紹用戶代理字符串檢測技術(shù)

百恒網(wǎng)絡(luò) 2013-07-06 4805

考慮到歷史原因以及現(xiàn)代瀏覽器中用戶代理字符串的使用方式,通過用戶代理字符串來檢測特定的瀏覽器并不是一件輕松的事。因此南昌網(wǎng)站設(shè)計公司技術(shù)人員認(rèn)為,首先要確定的往往是你需要多么具體的瀏覽器信息。一般情況 下,知道呈現(xiàn)引擎和最低限度的版本就足以決定正確的操作方法了。例如,我們不推薦使用下列代碼:

if (isIE6 if isIE7){//不推薦! //代碼

}

這個例子是想要在瀏覽器為IE6或7時執(zhí)行相應(yīng)代碼。這種代碼其實(shí)是很脆弱的,因?yàn)樗罁?jù)特定的版本來決定做什么。如果是IE8怎么辦呢?只要IE有新版本出來,就必須更新這些代碼。不過,像下面這樣使用相對版本號則可以避免此問題:

if (ieVer>=6){ //代碼

)

這個例子首先檢測IE的版本號是否至少等于6,如果是則執(zhí)行相應(yīng)操作。這樣就可以確保相應(yīng)的代碼將來照樣能夠起作用。我們下面的瀏覽器檢測腳本就將本著這種思路來編寫。

如前所述,確切知道瀏覽器的名字和版本號不如確切知道它使用的是什么呈現(xiàn)引擎。如果Firefox、 Camino和Netscape都使用相同版本的Gecko,那它們一定支持相同的特性。類似地,不管是什么瀏覽器,只要它跟Safari 3使用的是同一個版本的WebKit,那么該瀏覽器也就跟Safari 3具備同樣的功能。 因此,我們要編寫的腳本將主要檢測五大呈現(xiàn)引擎:IE.Gecko.WebKit.KHTML和Opera。

為了不在全局作用域中添加多余的變量,我們將使用模塊增強(qiáng)模式來封裝檢測腳本。檢測腳本的基本代碼結(jié)構(gòu)如下所示:

var client=function(){

//呈現(xiàn)引擎

var engine={

ie: O,

gecko:0,

webkit:0,

khtml:0.

opera:O,

//具體的版本號

ver:null

};

//在此檢測呈現(xiàn)引擎、平臺和設(shè)備

return(

engine : engine

};

}();

這里聲明了一個名為client的全局變量,用于保存相關(guān)信息。匿名函數(shù)內(nèi)部定義了一個局部變量engine,它是一個包含默認(rèn)設(shè)置的對象字面量。在這個對象字面量中,每個呈現(xiàn)引擎都對應(yīng)著一個屬性,屬性的值默認(rèn)為0。如果檢測到了哪個呈現(xiàn)引擎,那么就以浮點(diǎn)數(shù)值形式將該引擎的版本號

寫入相應(yīng)的屬性。而呈現(xiàn)引擎的完整版本(是一個字符串),則被寫入ver屬性。作這樣的區(qū)分可以支持像下面這樣編寫代碼:

if(client.engine.ie){//如果是IE,client.ie的值應(yīng)該大于0

//針對IE的代碼

} else if (client.engine.gecko>1.5)(

if (client.englne.ver=="1.8.1"){

//針對這個版本執(zhí)行某些操作

}

}

在檢測到一個呈現(xiàn)引擎之后,其client.engine中對應(yīng)的屬性將被設(shè)置為一個大于0的值,該值可以轉(zhuǎn)換成布爾值true。這樣,就可以在if語句中檢測相應(yīng)的屬性,以確定當(dāng)前使用的呈現(xiàn)引擎,連具體的版本號都不必考慮。鑒于每個屬性都包含一個浮點(diǎn)數(shù)值,因此有可能丟失某些版本信息。例如,將字符串”1.8.1傳入parseFloat()后會得到數(shù)值1.8。不過,在必要的時候可以檢測ver屬性,該屬性中會保存完整的版本信息。

要正確地識別呈現(xiàn)引擎,關(guān)鍵是檢測順序要正確。由于用戶代理字符串存在諸多不一致的地方,如果檢測順序不對,很可能會導(dǎo)致檢測結(jié)果不正確。為此,第一步就是識別Opera,因?yàn)樗挠脩舸碜址锌赡芡耆7缕渌麨g覽器。我們不相信Opera,是因?yàn)?任何情況下)其用戶代理字符串(都)不會將自己標(biāo)識為Opera。

要識別Opera,必須得檢測window.opera對象。Opera 5及更高版本中都有這個對象,用以保存與瀏覽器相關(guān)的標(biāo)識信息以及與瀏覽器直接交互。在Opera 7.6及更高版本中,調(diào)用version()方法可以返回一個表示瀏覽器版本的字符串,而這也是確定Opera版本號的最佳方式。要檢測更早版本的 Opera,可以直接檢查用戶代理字符串,因?yàn)槟切┌姹具€不支持隱瞞身份。不過,2007底Opera的最高版本已經(jīng)是9.5了,所以不太可能有人還在使用7.6之前的版本。那么,檢測呈現(xiàn)引擎代碼的第一步,就是編寫如下代碼:

if (window.opera){

engine.ver=window.opera.version();

engine.opera=parseFloat( engine.ver);

}

這里,將版本的字符串表示保存在了englne.ver中,將浮點(diǎn)數(shù)值表示的版本保存在了egine.opera中。如果瀏覽器是Opera,測試window.opera就會返回true;否則,就要看看是其他的什么瀏覽器了。

本文僅限內(nèi)部技術(shù)人員學(xué)習(xí)交流,不得作于其他商業(yè)用途.文章出自:南昌網(wǎng)站建設(shè)公司-百恒網(wǎng)絡(luò) http://m.iotmicrosoft.com 如轉(zhuǎn)載請注明出處!

400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)小程序

歡迎您的光顧,我們將竭誠為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×