狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

javascript檢測瀏覽器版本的方法

admin
2011年11月29日 9:28 本文熱度 3031
一、識別瀏覽器是否支持某些特性
    為了避免腳本在一些老版本的瀏覽器中出現問題,需要檢查一下代碼在那些瀏覽器中是否能夠執行,這樣做是很有必要的。在對某一瀏覽器檢測就是為了確定代碼是否可以在客戶端上正常運行,因此,我們要將精力放在“檢測瀏覽器可以做什么”上面,從需求方面來講,這樣做比“檢測當前的瀏覽器是什么版本的何種瀏覽器”得到的效果會更好。要檢測腳本是否可以在某瀏覽器上正常運行,簡單的辦法就是檢測當前瀏覽器是否具有腳本中所需的特性,這樣檢測不僅簡單,而且比直接檢測瀏覽器更有意義。一定要用 typeof 來進行測試,杜絕用 if 來判斷(要注意的一點是檢測的如果是方法或者是函數不要帶參數,否則,就變成了檢測返回值); www~phperz~com

var xmlHttpExists = typeof XMLHttpRequest;
而且這種測試方法還可以為那些不支持某些特性的瀏覽器提供相應的代碼;
if(typeof document.designMode != 'undefined'){
    document.designMode = "on";
}else{
    ...........
} phperz.com

二、識別特殊的瀏覽器
    雖然前面介紹的那種特性檢測法很好,但是有的時候,瀏覽器可能以不正確的方式實現了某些特性,(即特性存在,只不過是返回的值不一樣),下面有一個函數,結合了已知的特性識別方法和用戶代理信息方法,這樣即使某些瀏覽器使用了欺騙手段(模仿了另一種瀏覽器的用戶代理字符串),仍可以準確無誤地將它識別出來:

phperz~com


function identifyBrowser(){
    var agent = navigator.userAgent.toLowerCase();
   
    if ( typeof navigator.vendor != 'undefined' && navigator.vendor == 'KDE' && typeof window.sidebar != 'undefined'){
        return "kde";
    }else if(typeof window.opera != "undefined"){
        var version = parseFloat(agent.replace(/.*opera[\/]([^ $]+).*/,"$1"));
        if(version >= 7){
            return "opera7";
        }else if(version >=5){
            return "opera5";
        }
        return false;
    }else if(typeof document.all != 'undefined'){ phperz.com
        if(typeof document.getElementById != 'undefined'){
            var browser = agent.replace(/.*ms(ie[\/ ][^ $]+).*/,"$1").replace(/ /,"");
            if(typeof document.uniqueID != 'undefined'){
                if(browser.indexOf("5.5") != -1){
                    return browser.replace(/(.*\.5).*/,"$1");
                }else{
                    return browser.replace(/(.*)\..*/,"$1");
                }

www~phperz~com


            }else{
                return "ie5mac";
            }
        }
        return false;
    }else if(typeof document.getElementById != 'undefined'){
        if(navigator.vendor.indexOf("Apple Computer,Inc.") != -1){
            if(typeof window.XMLHttpRequest != 'undefined'){
                return "safari1.2";
            }
            return "safari1";
        }else if(agent.indexOf("gecko") != -1){ php程序員站
            return "mozilla";
        }
    }
    return false;
}
www~phperz~com


說明:
應為navigator.vendor 為 'KDE' 的瀏覽器只有一種,那就 konqueror,因為 konqueror 3.2以前的版本提供的功能不完善,所以只需要檢測該版本以及以后版本就可以了,上述的代碼通過 window.sidebar 對象進行檢測來實現這一點的,因為該對象只有3.2以后的版本才可用。 www.phperz.com

接下來,對opera 的檢測,盡管它傾向于偽裝成其他的瀏覽器,但是opera 是唯一具有 window.opera 對象的唯一瀏覽器。 www~phperz~com

完成opera的檢測,就可以放心的運行 document.all的測試了,這是 IE 的一個屬性,但是由于兼容性的原因 Opera 也使用這個屬性,不過其他的瀏覽器都沒有使用 document.all ,所以區分 ie 和其他的瀏覽器的一個好方法就是查看 document.all ,跟前面一樣,完成這個判斷之后,就可以安全地檢查用戶代理的字符串中是否含有'msie'了。在這個階段,也可以將window下的 IE 和 Mac 操作系統下使用 ie 區分出來,因為后者沒有其他版本ie所具有的 document.uniqueID 屬性,所以如果這個屬性不存在,那么客戶端使用的 Mac 操作系統。

phperz.com


完成以上之后,就可以通過 doucment.getElementByID 將所有的老版本瀏覽器過濾掉,任何不支持該方法的瀏覽器幾乎不支持 javascript ,所以對那些瀏覽器的過濾很合理的。如果瀏覽器支持這個方法,那么 Mozilla 和 safari 就可以被區分開來了。

phperz.com

盡管Safari 和MOzilla 非常相似,(甚至在用戶代理字符串中都包含了"gecko"),但是它的 navigator.vendor 值總是 "Apple Computer,Inc".另外 Safari1.2版本相對于以前的版本有明顯的改善,包括對XMLHttpRequest的支持,所以如果我們確實需要這個版本的safari,檢測一下這個版本還是很值得的。

php程序員站

排除了 Safari 之后,就可以利用用戶代理中的"gecko" 來檢測Mozilla了,這個引擎的變種很多,這些變體的版本通常很難檢測,但是如果確實想要支持它,則簡單的通過 navigator.userAgent 判斷即可。 www~phperz~com

對于上面沒有提到的瀏覽器,我們就可以認為他們不支持Javascript和Dom,最后以返回false的方式處理。 www.phperz.com

調用以上的函數,會返回一個字符串,該字符串 會給出瀏覽器的類型以及版本。
下面的列表列出了,在不同瀏覽器下的返回值


www~phperz~com


瀏覽器 identifyBrowser返回的字符串
Unsupported browsers  false
Konqueror3.2及以上版本 "kde"
Opera 5和Opera 6  "opera5"
Opera 7及以上版本 "opera7"
Internet Explorer5  "ie5"
基于mac的Internet Explorer5  "ie5mac"
Internet Explorer5.5  "ie5.5"
Internet Explorer6及以上版本  "ie6","ie7",etc
Mozilla/FireFox "mozilla"
Safari1.0和1.1 "safari1"
Safari1.2+ "safari2"

  phperz.com

除了識別瀏覽器之外,有時候為了解決問題,需要知道瀏覽器在什么操作系統下運行,這個信息就包括在用戶代理字符串中,不過它的檢測比較簡單 php程序員之家

function identifyOS(){
    var agent = navigator.userAgent.toLowerCase();
    if (agent.indexOf("win") != -1){
       return "win";
    }else if(agent.indexOf("mac") != -1){
       return "mac";
    }else{
       return "unix";
    }
    return false;
}

該文章在 2011/11/29 9:28:45 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved