3.14.2010

[JavaScript] 如何抓取瀏灠器的版本 (How to auto select browser version by JavaScript) Part I??

近日,因工作上的需求,要做多國語系的網頁判斷 (HomePage GUI),當使用者開啟瀏灠器之後,自動偵測瀏灠器的語系,再導至相對應語系的網頁和連結。

結果,在Google上找到了JavaScript有.userLanguage這個物件可以做判斷;附加價值就是也順便找到了判斷瀏灠器版本的一些方法。

於是,就興起了想要自己寫一個的念頭;參考了一些別人分享出來的寫法,發現大部份的寫法,都只是針對瀏灠器核心的部份做判斷;如果要細分瀏灠器的種類的話,似乎是沒有。

當然,一些前置作業是必須的,因此,我從史萊姆的第一個家找了14種的瀏灠器來做測試,用JavaScript的關鍵字:.userAgent.appName.appVersion來作為判別的依據。

用這三個關鍵字來抓取14種瀏灠器的訊息 (可以點圖放大);如下。

01. Avant Browser http://www.avantbrowser.com/



02. GOSURF http://gosurfbrowser.com/



03. GreenBrowser http://www.morequick.com/indexgb.htm



04. KKMan http://www.kkbox.com.tw/kkman/index.html



05. Mozilla Firefox http://moztw.org/



06. Maxthon http://www.maxthon.cn/



07. Netscape Navigator http://netscape.aol.com/



08. Opera http://www.opera.com/



09. PCMan http://pcman.openfoundry.org/



10. Safari http://www.apple.com/tw/safari/download/



11. Sleipnir http://sleipnir.twftp.org/download.html



12. The World Browser http://www.ioage.com/tw/



13. Internet Explorer http://www.microsoft.com/



14. Google Chrome http://www.google.com/chrome/index.html



然後再依據這些訊息,整理出一份表單,如下:

userAgent:



userName:



userVersion:



根據以上的資訊,也可以寫出一個簡易判斷瀏灠器核心的JavaScript source code:

有需要的就自行Copy - Paste到記事本上吧!!Google Blogger好像沒有支援程式碼的那種東西....看起來有點亂;然後把程式碼存成*.HTML檔,用瀏灠器開啟即可!!
function Init() {

    var strBrowserKernelVersion;

    with(navigator) {
        strBrowserKernelVersion = appName;
        if (appName == "Microsoft Internet Explorer") {
            if(appVersion.charAt(0) == 1)
                strBrowserKernelVersion += " 1.0";
            else if(appVersion.charAt(0) == 2)
                strBrowserKernelVersion += " 2.0";
            else if(appVersion.charAt(0) == 3)
                strBrowserKernelVersion += " 3.0";
            else if(appVersion.charAt(0) == 4)
                strBrowserKernelVersion += " 4.0";
            else
                strBrowserKernelVersion += " 4.0 above";
        }
        else if (appName == "Netscape") {
            if(appVersion.charAt(0) == 1)
                strBrowserKernelVersion += " 1.0";
            else if(appVersion.charAt(0) == 2)
                strBrowserKernelVersion += " 2.0";
            else if(appVersion.charAt(0) == 3)
                strBrowserKernelVersion += " 3.0";
            else if(appVersion.charAt(0) == 4)
                strBrowserKernelVersion += " 4.0";
            else if(appVersion.charAt(0) == 5)
                strBrowserKernelVersion += " 5.0";
            else
                strBrowserKernelVersion += " 5.0 above";
        }
        else // if(appName == "Opera")
            strBrowserKernelVersion = "Opera " + appVersion.substr(0, 4);
    } // with() end!!
    alert("Your Browser Kerner Version is: \n" + strBrowserKernelVersion);

    return;
}
參考資料:
http://www.bnw.com.tw/conference/viewtopic.php?f=14&t=1900&start=0

(To be continue....)

沒有留言:

張貼留言