navigator.userAgent.toLowerCase()
navigator是Browser内置对象
userAgent是navigator的属性方法,可以返回客户机发送服务器的头部信息。作用是返回当前用户所使用的什么浏览器
-
toLowerCase()转换为小写
let sysObj = {}; let browserInfo = navigator.userAgent.toLowerCase(); let vsMsg; (vsMsg = browserInfo.match(/msie ([\d.]+)/)) ? sysObj.ie = vsMsg[1]: (vsMsg = browserInfo.match(/firefox\/([\d.]+)/)) ? sysObj.firefox = vsMsg[1] : (vsMsg = browserInfo.match(/chrome\/([\d.]+)/)) ? sysObj.chrome = vsMsg[1] : (vsMsg = browserInfo.match(/opera.([\d.]+)/)) ? sysObj.opera = vsMsg[1] : (vsMsg = browserInfo.match(/version\/([\d.]+).*safari/)) ? sysObj.safari = vsMsg[1] : 0; if (sysObj.ie) { console.log('IE: ' + sysObj.ie) } if (sysObj.firefox) { console.log('Firefox: ' + sysObj.firefox) } if (sysObj.chrome) { console.log('Chrome: ' + sysObj.chrome) } if (sysObj.opera) { console.log('Opera: ' + sysObj.opera) }; if (sysObj.safari) { console.log('Safari: ' + sysObj.safari) }
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
上面是对这个方法是JavaScript判断浏览器以及浏览器版本
截图效果
-
使用Chrome浏览器打开
-
使用Safari浏览器打开
看来是没有问题的,也就不一一测试了。
将上面的代码封装成一个方法,返回sysObj对象,在此对象中封装了浏览器的类型和版本信息
function getBrowserInfo() {
let sysObj = {};
let browserInfo = navigator.userAgent.toLowerCase();
let regular = /(msie|firefox|chrome|opera|version).*?([\d.]+)/;
let vsMsg = browserInfo.match(regular);
sysObj.browserName = vsMsg[1].replace(/version/, "'safari");
sysObj.versionInfo = vsMsg[2];
return sysObj;
}
let browserInfo = getBrowserInfo();
console.log(browserInfo.browserName + "的版本是:" + browserInfo.versionInfo)
这个只是区分pc端的浏览器,移动端不适用,而且移动端除了安卓和苹果外还有一些App内置的浏览器,比如新浪微博、腾讯QQ(非QQ浏览器)和微信
这里卿洋
愿喜❤️