ユーザーエージェントを判別するJavascriptクロージャー
※edgeとざっくりとしたデバイスを取得できる変更したコードをこちらに再記しました。
最近よくつかうため、掲載。
毎度ながらネットで拾ってきたコードの改造シリーズ。
そこそこ大きめのJavascriptを組むときに、いちいち変数を見に行くのはなんとなくテンポが悪く感じたため、モジュールとして使えるようにクロージャー化。
一つのJSファイルとして読み込んで、あとは普通のファンクションとおなじ感覚で呼び出し。
クロージャー内容
以下を別ファイルに保存して、html側は他のJSより上の行にでも<script>で読み込んでおく。
var agent = (function(){
var setVer = 'betternew';
return{
reg: function(){
var userAgent = window.navigator.userAgent.toLowerCase();
var appVersion = window.navigator.appVersion.toLowerCase();
var ret = '';
if (userAgent.indexOf('msie') > -1){
if (appVersion.indexOf('msie 6.0') > -1 || appVersion.indexOf('msie 7.0') > -1 || appVersion.indexOf('msie 8.0') > -1){
setVer = 'regacy';
}
}
},
get: function(){
var userAgent = window.navigator.userAgent.toLowerCase();
var appVersion = window.navigator.appVersion.toLowerCase();
var ret = '';
if (userAgent.indexOf('msie') > -1){
if (appVersion.indexOf('msie 6.0') > -1){
ret = 'ie6';
}else if (appVersion.indexOf('msie 7.0') > -1){
ret = 'ie7';
}else if (appVersion.indexOf('msie 8.0') > -1){
ret = 'ie8';
}else if (appVersion.indexOf('msie 9.0') > -1){
ret = 'ie9';
}
else if (appVersion.indexOf('msie 10.0') > -1){
ret = 'ie10';
}
else {
ret = 'unknown';
}
}else if (userAgent.indexOf('trident/7.0') > -1){
ret = 'ie11';
}else if (userAgent.indexOf('firefox') > -1){
ret = 'firefox';
}else if (userAgent.indexOf('opera') > -1){
ret = 'opera';
}else if (userAgent.indexOf('chrome') > -1){
ret = 'chrome';
}else if (userAgent.indexOf('safari') > -1){
ret = 'safari';
}else{
ret = 'unknown';
}
return ret;
},
out: function(){
return setVer;
}
};
})();
agent.reg();
呼び出しコード
単にエージェントだけを判別したいのであれば、
if(agent.get() != 'ie6'){
//IE6ではない場合の処理
}
・・・な感じで。
もしIE8以下のレガシーブラウザをまとめて判定したい場合、
if(agent.out() == 'regacy'){
//IE8以下レガシーブラウザの処理
}
でOK。
プラットフォームの判別はしてません。
まぁそれはまたいずれ掲載予定。
まぁ自分で使うコードだから、問題ねーや。
