LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

javascript檢測瀏覽器版本的方法

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

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

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

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


說明:
應(yīng)為navigator.vendor 為 'KDE' 的瀏覽器只有一種,那就 konqueror,因?yàn)?konqueror 3.2以前的版本提供的功能不完善,所以只需要檢測該版本以及以后版本就可以了,上述的代碼通過 window.sidebar 對(duì)象進(jìn)行檢測來實(shí)現(xiàn)這一點(diǎn)的,因?yàn)樵搶?duì)象只有3.2以后的版本才可用。 www.phperz.com

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

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

phperz.com


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

phperz.com

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

php程序員站

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

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

調(diào)用以上的函數(shù),會(huì)返回一個(gè)字符串,該字符串 會(huì)給出瀏覽器的類型以及版本。
下面的列表列出了,在不同瀏覽器下的返回值


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

除了識(shí)別瀏覽器之外,有時(shí)候?yàn)榱私鉀Q問題,需要知道瀏覽器在什么操作系統(tǒng)下運(yùn)行,這個(gè)信息就包括在用戶代理字符串中,不過它的檢測比較簡單 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 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲欧美另类图片区综合区 | 亚洲中文字幕精品有码在线 | 欲香欲色天天综合久久 | 亚洲欧美自拍一区 | 亚洲精品五级在线 | 最精彩色站在线播放 |