ユーザーエージェントの取得
ユーザーエージェントを得るには、navigator.userAgent
を使用します。
構文
var ua = navigator.userAgent;
戻り値
ユーザーエージェントの文字列を返します。
サンプルコード
JavaScript
var ua = navigator.userAgent;
alert(ua);
デモ
UserAgentによる抽出・判定
次のようなコードでUserAgentによる抽出や判定が可能になります。
定義
JavaScript
var platform = (function() {
var ua = navigator.userAgent.toLowerCase(),
matches = [],
result = {
browser : {
name : '',
version : '',
engine : ''
},
os : {
name : '',
version : ''
},
isIE : false,
isEdge : false,
isFirefox : false,
isSafari : false,
isChrome : false,
isOpera : false,
isSP : false,
isTablet : false
};
// ブラウザ名とバージョン
if (ua.match(/msie/) || ua.match(/trident/)) {
result.browser.name = 'Internet Explorer';
matches = ua.match(/(msie|rv:?)\s?([\d\.]+)/);
if (matches && matches.length > 0 && matches[2]) {
result.browser.version = matches[2];
}
result.isIE = true;
} else if (ua.match(/mozilla\/.+windows nt 10\.[0-9].+chrome.+safari.+edge\/[0-9\.]+/i)) {
result.browser.name = 'Edge';
matches = ua.match(/mozilla\/.+windows nt 10\.[0-9].+chrome.+safari.+edge\/([0-9\.]+)/);
if (matches && matches.length > 0 && matches[1]) {
result.browser.version = matches[1];
}
result.isEdge = true;
} else if (ua.match(/opera|opr/)) {
result.browser.name = 'Opera';
if (ua.match(/version\//)) {
matches = ua.match(/version\/([\d\.]+)/);
if (matches && matches.length > 0 && matches[1]) {
result.browser.version = matches[1];
}
} else {
matches = ua.match(/(opera(\s|\/)|opr\/)([\d\.]+)/);
if (matches && matches.length > 0 && matches[3]) {
result.browser.version = matches[3];
}
}
result.isOpera = true;
} else if (ua.match(/firefox/)) {
result.browser.name = 'Firefox';
matches = ua.match(/firefox\/([\d\.]+)/);
if (matches && matches.length > 0 && matches[1]) {
result.browser.version = matches[1];
}
result.isFirefox = true;
} else if (ua.match(/chrome/)) {
result.browser.name = 'Chrome';
matches = ua.match(/chrome\/([\d\.]+)/);
if (matches && matches.length > 0 && matches[1]) {
result.browser.version = matches[1];
}
result.isChrome = true;
} else if (ua.match(/safari/)) {
result.browser.name = 'Safari';
matches = ua.match(/version\/([\d\.]+)/);
if (matches && matches.length > 0 && matches[1]) {
result.browser.version = matches[1];
}
result.isSafari = true;
} else {
result.browser.name = 'Unknown';
}
// ブラウザレンダリングエンジン
if (ua.match(/trident/)) {
result.browser.engine = 'Trident';
} else if (ua.match(/blink/)) {
result.browser.engine = 'Blink';
} else if (ua.match(/webkit/)) {
result.browser.engine = 'Webkit';
} else if (ua.match(/khtml/)) {
result.browser.engine = 'KHTML';
} else if (ua.match(/gecko/)) {
result.browser.engine = 'Gecko';
} else if (ua.match(/presto/)) {
result.browser.engine = 'Presto';
} else {
result.browser.engine = 'Unknown';
}
// OS名とバージョン
if (ua.match(/windows phone/)) {
result.os.name = 'Windows Phone';
} else if (ua.match(/windows/)) {
result.os.name = 'Windows';
matches = ua.match(/windows nt ([\d\.]+)/);
if (matches && matches.length > 0 && matches[1]) {
if (matches[1].match(/10\.[0-9]/)) {
result.os.version = matches[1];
} else if (matches[1] === '6.3') {
result.os.version = '8.1';
} else if (matches[1] === '6.2') {
result.os.version = '8.0';
} else if (matches[1] === '6.1') {
result.os.version = '7';
} else if (matches[1] === '6.1') {
result.os.version = '7';
} else if (matches[1] === '6.0') {
result.os.version = 'Vista';
} else if (matches[1] === '5.2' || matches[1] === '5.1') {
result.os.version = 'XP';
} else if (matches[1] === '5.0') {
result.os.version = '2000';
}
}
matches = ua.match(/windows ([\d]+)/);
if (matches && matches.length > 0 && matches[1]) {
if (matches[1] === '98' && ua.match(/9x/)) {
result.os.version = 'Me';
} else if (matches[1] === '98') {
result.os.version = '98';
} else if (matches[1] === '95') {
result.os.version = '95';
} else if (matches[1] === '3.1') {
result.os.version = '3.1';
}
}
} else if (ua.match(/ios|iphone|ipad|ipod/)) {
result.os.name = 'iOS';
matches = ua.match(/((iphone)? os) ([\d_]+)/);
if (matches && matches.length > 0 && matches[3]) {
result.os.version = matches[3].replace(/_/g, '.');
}
} else if (ua.match(/mac os|mac_powerpc|macintosh/)) {
result.os.name = 'Macintosh';
} else if (ua.match(/android/)) {
result.os.name = 'Android';
matches = ua.match(/android ([\d\.]+)/);
if (matches && matches.length > 0 && matches[1]) {
result.os.version = matches[1];
}
} else if (ua.match(/linux/)) {
result.os.name = 'Linux';
} else if (ua.match(/firefox/) && ua.match(/mobile|tablet/)) {
result.os.name = 'Firefox OS';
} else {
result.os.name = 'Unknown';
}
// デバイス判定
if (ua.match(/iphone/) || ua.match(/ipod/) || ua.match(/android/) && ua.match(/mobile/) || ua.match(/windows phone/)) {
result.isSP = true;
} else if (ua.match(/ipad/) || ua.match(/android/) && !ua.match(/mobile/)) {
result.isTablet = true;
}
return result;
})();
使い方
JavaScript
alert(platform.os.name);