我需要从用户代理字符串中提取操作系统名称和浏览器名称。
用户代理字符串示例:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100825 Ubuntu/9.10 (karmic) Firefox/3.6.9
如何仅获取操作系统(例如 "Linux i686"
和 "Firefox 3.6.9"
)?
以下是我在 fiddle 链接 中的代码:
function getBrowserAndOS(userAgent, elements) {
var browserList = {
'Chrome': [/Chrome\/(\S+)/],
'Firefox': [/Firefox\/(\S+)/],
'MSIE': [/MSIE (\S+);/],
'Opera': [
/Opera\/.*?Version\/(\S+)/,
/Opera\/(\S+)/
],
'Safari': [/Version\/(\S+).*?Safari\//]
},
re, m, browser, version;
var osList = {
'Windows': [/Windows\/(\S+)/],
'Linux': [/Linux\/(\S+)/]
},
re2, m2, os;
if (userAgent === undefined)
userAgent = navigator.userAgent;
if (elements === undefined)
elements = 2;
else if (elements === 0)
elements = 1337;
for (browser in browserList) {
while (re = browserList[browser].shift()) {
if (m = userAgent.match(re)) {
version = (m[1].match(new RegExp('[^.]+(?:\.[^.]+){0,' + --elements + '}')))[0];
//version = (m[1].match(new RegExp('[^.]+(?:\.[^.]+){0,}')))[0];
//return browser + ' ' + version;
console.log(browser + ' ' + version);
}
}
}
for (os in osList) {
while (re2 = osList[os].shift()) {
if (m2 = userAgent.match(re2)) {
//version = (m[1].match(new RegExp('[^.]+(?:\.[^.]+){0,' + --elements + '}')))[0];
//version = (m[1].match(new RegExp('[^.]+(?:\.[^.]+){0,}')))[0];
//return browser + ' ' + version;
console.log(os);
}
}
}
return null;
}
console.log(getBrowserAndOS(navigator.userAgent, 2));
我只需要提取操作系统名称和浏览器名称及其版本。如何解析以获取这些字符串?