前言
尝试着在百度、谷歌搜索过相关资料,大多都是互相转载而且版权一大堆内容特垃圾的那种~~鄙视中。。
现在需要的是获取浏览器的具体版本和操作系统的具体版本,比如iPhone,Android,Win10,IE11等等比较新鲜的东西,网上传的那种就见鬼去了~
所以呢,我就打算自己动刀,想一个比较完美又可以扩展的办法,终于弄出了点眉目。
获取操作系统以及版本
【思路】
创建一个对象数组,保存操作系统的通用名称,比如Windows,Mac OSX,iPhone等,然后再保存一个对应的正则表达式,用来从UserAgent中匹配出具体的版本号。
【实现】
var info = {};
var temp = {};
info.ua = navigator.userAgent;
//
// 获取操作系统版本
//
temp.os = {
'Mac OS X': /Mac OS X ([\d._])/,
'iPhone OS': /iPhone OS ([\d._])/,
}
for (var o in temp.os){
if (info.ua.indexOf(o)) {
var m = info.ua.match(temp.os[o]);
info.os = m ? m[0] : (info.os || 'UnknowOS');
};
}
上面的代码中temp.os对象可以自由地扩展,我想你都懂并能领会其中的好处!
获取浏览器和版本
同上面一样,就不多说了,直接上代码:
//
// 获取浏览器版本
//
temp.browser = {
'Safari': /Safari\/([\d.]+)$/,
'Chrome': /Chrome\/([\d.]+)/,
'Firefox': /Firefox\/([\d.]+)$/,
}
for (var b in temp.browser){
if (info.ua.indexOf(b)) {
var m = info.ua.match(temp.browser[b]);
info.browser = m ? m[0] : (info.browser || 'UnknowBrowser');
};
}
总结
其实呢,我觉得js好玩的地方非常多,有很多地方是其他语言无法超越的。当然,每个语言都有自己的长处,随个人所好~