caoporm97国产在线视频|欧美性XXXXX精品|一本一道久久a久久精品综合开|精品久久久久久久久久久AⅤ|

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

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

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

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

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

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

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

}

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

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

)

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

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

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

var client=function(){

//呈現(xiàn)引擎

var engine={

ie: O,

gecko:0,

webkit:0,

khtml:0.

opera:O,

//具體的版本號(hào)

ver:null

};

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

return(

engine : engine

};

}();

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

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

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

//針對(duì)IE的代碼

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

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

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

}

}

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

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

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

if (window.opera){

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

engine.opera=parseFloat( engine.ver);

}

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

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

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

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

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