ユーザーエージェントを判別する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。

 

プラットフォームの判別はしてません。

まぁそれはまたいずれ掲載予定。

 

まぁ自分で使うコードだから、問題ねーや。

 

 

カテゴリ

この記事のコメント

コメントはないです。

コメントを残す

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