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;
}

0 件のコメント:
コメントを投稿