希岛爱理av免费一区二区,成人性教育av免费网址,欧美7777,在线免费日韩片

十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
南昌百恒網絡微信公眾號 掃一掃關注
小程序
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡微信小程序

百恒網絡

南昌百恒網絡

結合實例介紹用戶代理字符串檢測技術

百恒網絡 2013-07-06 4964

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

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

}

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

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

)

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

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

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

var client=function(){

//呈現引擎

var engine={

ie: O,

gecko:0,

webkit:0,

khtml:0.

opera:O,

//具體的版本號

ver:null

};

//在此檢測呈現引擎、平臺和設備

return(

engine : engine

};

}();

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

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

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

//針對IE的代碼

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

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

//針對這個版本執行某些操作

}

}

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

要正確地識別呈現引擎,關鍵是檢測順序要正確。由于用戶代理字符串存在諸多不一致的地方,如果檢測順序不對,很可能會導致檢測結果不正確。為此,第一步就是識別Opera,因為它的用戶代理字符串有可能完全模仿其他瀏覽器。我們不相信Opera,是因為(任何情況下)其用戶代理字符串(都)不會將自己標識為Opera。

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

if (window.opera){

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

engine.opera=parseFloat( engine.ver);

}

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

本文僅限內部技術人員學習交流,不得作于其他商業用途.文章出自:南昌網站建設公司-百恒網絡 http://www.527701.com 如轉載請注明出處!

400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡小程序

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

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
售后服務 售后服務
 
備案專線 備案專線
 
×
主站蜘蛛池模板: 余姚市| 巴塘县| 自贡市| 新绛县| 湾仔区| 尉犁县| 和平区| 禄丰县| 兴安盟| 海丰县| 厦门市| 芒康县| 海门市| 汉中市| 无极县| 胶南市| 丰顺县| 威远县| 黄大仙区| 崇义县| 五常市| 武强县| 萝北县| 保定市| 岳普湖县| 泰顺县| 海安县| 德保县| 龙岩市| 工布江达县| 偃师市| 迁西县| 平江县| 祁阳县| 寻甸| 马龙县| 滦平县| 泽库县| 水城县| 眉山市| 武宁县|