首页 » JavaScript » JS 浏览器检测

最后更新于 2018年12月11日

浏览器检测一般是不需要等待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中,外面再进行调用。

  • weixiao kaixin tushetou jingkong deyi fanu liezui liuhan daku ganga bishi nanguo lihai qian yiwen numu tu yi haixiu se fadai minyan hehe henkaixin huaji biyiyan kuanghan maimeng shui xiaku penqi zhangzui pen aini ye niu laji ok chigua renshi kongbu shuai xiaoxiese touxiao huaixiao jingnu chihuai kaisang xiaoku koubi zhuangbi lianhong kanbujian shafa zhijing xiangjiao dabian yaowan redjing lazhu rizhi duocang chixigua hejiu xixi xiaopen goukun xiaobuchu shenme wusuowei guancha lajing chouyan xiaochi bie zhadanzui zhadanxiao
  1. gellytech

    发表于:
    来自 Google Chrome 63 in windows 7

    学习打卡

    回复