[js] ブラウザ判別

Pocket

jQueryに依存しないもの。
判別できる種類とかは増やしていきたいところ。

サンプル:

ソースはこちら↓

var WINDOW_APP = WINDOW_APP || {};
 
WINDOW_APP.util = {};
 
/**
 * ブラウザ判別
 *
 */
WINDOW_APP.util.env = (function () {
	var
		_isIE = false,
		_isIE6 = false,
		_isIE7 = false,
		_isIE8 = false,
		_isIE9 = false,
		_isFirefox = false,
		_isWebKit = false,
		_isSafari = false,
		_isChrome = false,
		_isOpera = false,
		_isSmartPhone = false,
		_isIphone = false,
		_isIpad = false,
		_isIpod = false,
		_isAndroid = false,
		_ua = navigator.userAgent;
 
	function isIE () {
		return _isIE;
	}
 
	function isIE6 () {
		return _isIE6;
	}
 
	function isIE7 () {
		return _isIE7;
	}
 
	function isIE8 () {
		return _isIE8;
	}
 
	function isIE9 () {
		return _isIE9;
	}
 
	function isFirefox () {
		return _isFirefox;
	}
 
	function isWebKit () {
		return _isWebKit;
	}
 
	function isSafari () {
		return _isSafari;
	}
 
	function isChrome () {
		return _isChrome;
	}
 
	function isOpera () {
		return _isOpera;
	}
 
	function isSmartPhone () {
		return _isSmartPhone;
	}
 
	function isIphone () {
		return _isIphone;
	}
 
	function isIpad () {
		return _isIpad;
	}
 
	function isIpod () {
		return _isIpod;
	}
 
	function isAndroid () {
		return _isAndroid;
	}
 
	/**
	 * 初期化
	 *
	 */
	function _init () {
		_isIE = /*@cc_on!@*/false;
		if(_isIE) {
			if(document.documentMode && document.documentMode >= 8) {
				switch (document.documentMode) {
					case 9:
						_isIE9 = true;
						break;
 
					case 8:
						_isIE8 = true;
						break;
				}
			}
			else if(typeof document.documentElement.style.maxHeight != "undefined") {
				_isIE7 = true;
			}
			else {
				_isIE6 = true;
			}
		}
 
		_isFirefox = Boolean(window.sidebar);
		_isOpera = Boolean(window.opera);
 
		_isWebKit = Boolean(!document.uniqueID && !window.opera && !window.sidebar && !window.orientation && window.localStorage);
		if(_isWebKit) {
			if(navigator.vendor.match(/apple/i)) {
				_isSafari = true;
			}
			else if(navigator.vendor.match(/google/i)) {
				_isChrome = true;
			}
		}
 
		_isSmartPhone = typeof window.orientation != "undefined";
 
		if (_ua.match(/iphone/i)) {
			_isIphone = true;
		}
		if (_ua.match(/ipad/i)) {
			_isIpad = true;
		}
		if (_ua.match(/ipod/i)) {
			_isIpod = true;
		}
		if (_ua.match(/android/i)) {
			_isAndroid = true;
		}
	}
 
	_init();
 
	//public
	return {
		isIE: isIE,
		isIE6: isIE6,
		isIE7: isIE7,
		isIE8: isIE8,
		isIE9: isIE9,
		isFirefox: isFirefox,
		isWebKit: isWebKit,
		isSafari: isSafari,
		isChrome: isChrome,
		isOpera: isOpera,
		isSmartPhone: isSmartPhone,
		isIphone: isIphone,
		isIpad: isIpad,
		isIpod: isIpod,
		isAndroid: isAndroid
	};
}());

ソース:

env.js
env.min.js(圧縮版)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です