也谈利用JavaScript做浏览器类型及版本检测
by 毛三胖 on 2018年02月11日
阅:441赞:8

检测函数

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(' ');
}

演示

说明

JavaScript有一个名为navigator的标准对象,其中包含了你正在使用的浏览器的相关信息。

navigator具有很多属性,但.userAgent属性是一个包含了浏览器,操作系统等信息的字符串,它是我们需要用到的。

如果在win10下使用谷歌浏览器,你的userAgent类似如下:

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3095.5 Safari/537.36

正如所见,navigator.userAgent是一个长长的字符串,可读性差。在一些特殊情况下,会应用到JavaScript做浏览器类型及版本检测,你可以使用本文提供了检测函数,具体用法见演示代码。

缺点

大多数情况下都不推荐使用JavaScript浏览器检测技术,在关键任务上永远不要使用。

首先JavaScript浏览器检测技术是不可靠的,此外,还有很多浏览器和浏览器版本,未来还会有更多浏览器出现 。这就使得浏览器检测变得不切实际,无法维护。特征检测是一个更好的选择,关于这一点在《JavaScript高级程序设计》第三版,第9章有很详尽的阐述。

参考

How can you detect the version of a browser?

Browser Detection with JavaScript

$ 热门标签
$ 贴士
简单是稳定的前提。 -Edsger Dijkstra
$ 声明
本站所有代码及文字都是作者精心汇编整理而成,转载代码及文字请明确注明出处和作者名称。