2012年3月22日木曜日

JavaScriptによるUserAgent判別

  • このエントリーをはてなブックマークに追加

JavaScriptでのUserAgent判別を行う案件があるので、
先にちょろっと判別式だけ書いてみようと思う。
基本的には既存のブラウザしか判別できないので、
後々追加していく必要があったり。




function getUA(){
    var ua = navigator.userAgent;
    var agent = "";

    if(ua.match(/msie/i)){
        if(ua.match(/msie 9/i))
            agent = "IE9";
        else if(ua.match(/msie 8/i))
            agent = "IE8";
        else if(ua.match(/msie 7/i))
            agent = "IE7";
    }
    else if(ua.match(/firefox/i))
        agent = "firefox";
    else if(ua.match(/opera/i))
        agent = "opera";
    else if(ua.match(/netscape/i))
        agent = "netscape";
    else if(ua.match(/safari/i)){
        if(ua.match(/chrome/i))
            agent = "chrome";
        else
            agent = "safari";
    }
    else if(ua.match(/ipad/i))
        agent = "iPad";
    else if(ua.match(/iphone/i))
        agent = "iPhone";
    else if(ua.match(/ipod/i))
        agent = "iPod";
    else
        agent = "unrecognized";

    return agent;
}

ということでこんな感じで書けばエージェント判別が出来る。
ただ上でも述べてるけど微妙なところとしては、ブラウザが追加された場合。
といってもIEの場合は7~9で仕様が違うので場合分けしているけど、
他のものについてはあまり意味がないのでそうしていなかったり。


----------追記(2012/03/23)----------

上記のものにAndroidの判別を加えた。
AndroidではiPadみたいにタブレットは別物にはならないので、
それを判別するためにさらにMobileかどうかで判別する必要がある。

つまりAndroidでかつMobileであるならばAndroidタブレットっていう感じ。

function getUA(){
    var ua = navigator.userAgent;
    var agent = "";

    if(ua.match(/msie/i)){
        if(ua.match(/msie 9/i))
            agent = "IE9";
        else if(ua.match(/msie 8/i))
            agent = "IE8";
        else if(ua.match(/msie 7/i))
            agent = "IE7";
    }
    else if(ua.match(/ipad/i))
        agent = "iPad";
    else if(ua.match(/iphone/i))
        agent = "iPhone";
    else if(ua.match(/ipod/i))
        agent = "iPod";
    else if(ua.match(/android/i)){
        if(ua.match(/mobile/i))
            agent = "Android";
        else
            agent = "AndroidTab";
    }
    else if(ua.match(/firefox/i))
        agent = "firefox";
    else if(ua.match(/opera/i))
        agent = "opera";
    else if(ua.match(/netscape/i))
        agent = "netscape";
    else if(ua.match(/safari/i)){
        if(ua.match(/chrome/i))
            agent = "chrome";
        else
            agent = "safari";
    }
    else
        agent = "unrecognized";

    return agent;
}

Adsense