ユーザーエージェントを判別する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。
プラットフォームの判別はしてません。
まぁそれはまたいずれ掲載予定。
まぁ自分で使うコードだから、問題ねーや。