DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 使用JavaScript檢測浏覽器的相關特性
使用JavaScript檢測浏覽器的相關特性
編輯:關於JavaScript     

一、檢測浏覽器的名稱
問題:
    不同的浏覽器對javascript的標准支持也有不同,有時希望腳本能夠在不同的浏覽器上都能運行良好,這時需要對浏覽器進行檢測,確定其名稱,以針對不同的浏覽器編寫相應的腳本。
解決方案:
    使用navigator對象的appName屬性。
    比如,要檢測浏覽器是否為IE,可以這麼做:
    var isIE = (navigator.appName == "Microsoft Internet Explorer");
    document.write("is IE?" + isIE);
    對於FireFox,navigator對象的appName屬性值為"Netscape";Opera9.02的appName屬性值為"Opera"(其更早版本可能不同);

二、檢測浏覽器的版本號:
問題:
    隨著浏覽器的版本的更迭,浏覽器所支持的腳本特性也在變化,有時候就需要針對不同的版本編寫相應的腳本,那麼如何獲得浏覽器的版本號?
解決方案:
    通過解析navigator對象的userAgent屬性來獲得浏覽器的完整版本號。
    IE將自己標識為MSIE,後面帶一個空格,版本號以及分號。所以我們只要取空格和分號之間的部分即可。如Windows XP SP2所帶的IE的userAgent屬性值為"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",可以看到其版本為6.0。可以用如下的函數來獲取IE浏覽器的版本號:
    function getIEVersonNumber()
    {
        var ua = navigator.userAgent;
        var msieOffset = ua.indexOf("MSIE ");
        if(msieOffset < 0)
        {
            return 0;
        }
        return parseFloat(ua.substring(msieOffset + 5, ua.indexOf(";", msieOffset)));
    }
假設我們要為IE5及以上版本編寫腳本,可以這麼寫:
    var isIE5Min = (getIEVersonNumber() >= 5);
    if(isIE5Min)
    {
        // perform statements for IE 5 or later
    }
    對於FireFox和Opera等浏覽器,也可以用navigator.userAgent屬性來獲取其版本號,只不過其形式與IE有所不同,如FireFox:
    Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
    Opera:Opera/9.02 (Windows NT 5.1; U; en)根據這些形式,我們不難獲得其版本號。但這些浏覽器的其它版本沒有測試過,其具體值不明確,如果要使用這種方法檢測,請自行驗證。

    下面討論下,上面的那段為IE5及以上版本浏覽器編寫的腳本,使用這種寫法要注意:要用>=而不是==,一般情況下,我們可以假定浏覽器是向後兼容的,所以使用==顯然不能適應新版本;另一方面,我們上面的假定也僅僅是假定,不能確保是這樣,如果浏覽器的某些對象或屬性不能向後兼容,我們的代碼也會產生問題,所以建議,少用浏覽器版本的比較,更多情況下,應檢測是要用的對象或屬性是否得到支持。

三、檢測客戶端的操作系統類型
根據上面的討論可以看到,navigator.userAgent屬性通常含有操作系統的基本信息,但很不幸,沒有統一的規則去根據userAgent獲取准確的操作系統信息,因為這些值與浏覽器的種類、浏覽器的版本甚至浏覽器的OEM版本都有關系。
通常我們能做的是,檢測一些更為通用的信息,比如操作系統是Windows還是Mac,而不是去看是Windows 98還是Windows XP。其規則是所有的Windows版本都會含有"Win",所有的Macintosh版本都含有"Mac",所有的Unix則含有"X11",而在Linux下則同時包含"X11"和"Linux"。如:
    var isWin = (navigator.userAgent.indexOf("Win") != -1);
    var isMac = (navigator.userAgent.indexOf("Mac") != -1);
    var isUnix = (navigator.userAgent.indexOf("X11") != -1);
通常用在為不同的操作系統設置不同的字體或位置等樣式。

四、檢測浏覽器對特定對象的支持
問題:
 &

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved