4 回答
TA贡献1844条经验 获得超8个赞
只能用UA,同时浏览器的版本信息允许被修改,可欺骗性比较强。
这是我常用的获取浏览器信息的代码,你可以参考一下:
navigator.sayswho= (function(){
var ua= navigator.userAgent, tem,
M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if(/trident/i.test(M[1])){
tem= /\brv[ :]+(\d+)/g.exec(ua) || [];
return 'IE '+(tem[1] || '');
}
if(M[1]=== 'Chrome'){
tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
}
M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
return M.join(' ');
})();
console.log(navigator.sayswho);
TA贡献1909条经验 获得超7个赞
根据UA来判断浏览器,只能接受UA会被修改的情况,这是没有办法改变的。
不过,某些情况下可以确定浏览器版本区间,比如IE5和IE6是没有XMLHttpRequest对象的,检测用户浏览器是否版本大于IE6可以使用if(window.XMLHttpRequest)语句进行判断。
我想,就算能修改IE的UA,也没办法凭空造一个不存在的XMLHttpRequest对象来吧。
添加回答
举报