Javascript ブラウザ判別&デバイスを簡易判別

以前、こちらで作成したコードはちょうどIE11が出始めたころに作ったが、edgeが出てきたり、簡易的にデバイス判定をしたいときがここ最近で増えた。

過去のコードが色々読みにくいことになっているので、整理の意味合いも込めて作りなおした。

 

agent.js

以下を保存or貼り付け。

var agent =(function(){
	var setVer = 'betternew';
	var userAgent, appVersion; = window.navigator.userAgent.toLowerCase();
	var appVersion = window.navigator.appVersion.toLowerCase();
 
	return{
		reg: function(){
			userAgent = window.navigator.userAgent.toLowerCase();
			appVersion = window.navigator.appVersion.toLowerCase();
			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 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('edge/') > -1){
				ret = 'edge';
			}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;
		},
		dev: function(){
			var ret = '';
			if(userAgent.indexOf('iphone') > -1 || userAgent.indexOf('ipod') > -1 ||(userAgent.indexOf('android') > -1 && userAgent.indexOf('mobile') > -1) ||(userAgent.indexOf('windows') > -1 && userAgent.indexOf('phone') > -1) || userAgent.indexOf('blackberry') > -1){
				ret = 'phone';
			}else if(userAgent.indexOf('ipad') > -1 ||(userAgent.indexOf('windows') > -1 && userAgent.indexOf('touch') > -1) ||(userAgent.indexOf('android') > -1 && userAgent.indexOf('mobile') < 0) || userAgent.indexOf('kindle') > -1 || userAgent.indexOf('playbook') > -1){
				ret = 'tablet';
			}else if(userAgent.indexOf('tablet')){
				ret = 'tablet';
			}else if(userAgent.indexOf('mobile')){
				ret = 'phone';
			}else{
				ret = 'unknown';
			}
			return ret;
		},
		out: function(){
			return setVer;
		}
	};
})();
 
agent.reg();

 

使い方

今回追加したのは以下。

if(agent.dev() === 'phone'){
	//もしもしの時の処理
}else if(agent.dev() === 'tablet'){
	//タブの時の処理
}else{
	//以外
}

 

ブラウザ判定は以前と変わらず。

//IE6ではない場合
if(agent.get() != 'ie6'){
	//何かの処理
}
//IE8以下の場合
if(agent.out() == 'regacy'){
	//何かの処理
}

 

以上、いまさらながらのスクリプト。

 

agent.jsのdevところのデバイス条件を細かに書けば、各端末用にすることも可。

といいつつ、後で条件を細かに書くこと考えて、userAgent.indexOf(‘tablet’)とuserAgent.indexOf(‘mobile’)は別個にした。条件としてはすごくいびつに見える。。

これは主にFirefox用の流れなので、書き方が気に入らない場合、他の条件に振り分ければオッケー。

 

カテゴリ

この記事のコメント

コメントはないです。

コメントを残す

メールアドレスが公開されることはありません。