浏览器检测一般是不需要等待dom加载完毕的,都是直接运行判断的,所以我们在window下直接运行函数,但是又不能直接写函数,这样可能会和后面的函数冲突,比如你写了个box()函数,万一后面又有人写一个box()函数那不是冲突了,所以还要做一个闭包处理。

(function getState() {
    (function getState() {
        window.system = {};
        var s = [];
        var ua = navigator.userAgent.toLowerCase();
        (s = ua.match(/firefox\/([\d.]+)/)) ? system.firfox = s[1]:
            (s = ua.match(/chrome\/([\d.]+)/)) ? system.chrome = s[1] :
            (s = ua.match(/msie ([\d.]+)/)) ? system.ie = s[1] :
            (s = ua.match(/opr\/[\d.]+/)) ? system.opera = s[1] :
            (s = ua.match(/opera\/.*version\/[\d.]+/)) ? system.opera = s[1] :
            (s = ua.match(/version\/([\d.]+).*safari/)) ? system.safari = s[1] : 0;


    })()

})();

自运行函数一般是两对圆括号组成,有时候我们因为要在别处调用啥的,只在后面加一对圆括号表示自运行,如果是两个圆括号就形成了闭包,闭包的话外面是无法调用的,所以我们要在里面创建一个window下的属性,用于调用。

然后就是创建一个数组用于保存提取的数据,因为浏览器使用只可能是在单一环境下,所以不必像上一章那样使用push传入,这里直接等于即可。

创建一个ua变量保存浏览器信息。

通过连续的三元运算判断是哪个浏览器,如果是便将数组中提取的信息通过创建键对值的形式保存在window.system中,外面再进行调用。

分类: JavaScript 标签: 浏览器检测

评论

全部评论 1

  1. gellytech
    gellytech
    Google Chrome Windows 7
    学习打卡

目录