• Discuz common.js代码注释(二)


    //获取浏览器版本号
    function browserVersion(types) {
        var other = 1;    //默认版本号
        for (i in types) {  //遍历types
            var v = types[i] ? types[i] : i; //判断types[i]是否为空,为空给types[i]赋值为i(types循环出的键),不为空则赋值types[i]本身
            if (USERAGENT.indexOf(v) != -1) {  //USERAGENT:浏览器请求头的User-Agent属性
                var re = new RegExp(v + '(\/|\s|:)([\d\.]+)', 'ig');  //声明正则表达式
                var matches = re.exec(USERAGENT);    //在USERAGENT匹配符合正则表达式的结果集
                var ver = matches != null ? matches[2] : 0;  //得到版本号
                other = ver !== 0 && v != 'mozilla' ? 0 : other;//如果ver不等于0且v不是火狐浏览器若为空则默认版本号,不为空则返回0
              } else {
                var ver = 0;   //设置版本号为0 
            }
            eval('BROWSER.' + i + '= ver'); //执行表达式
        }
        BROWSER.other = other;  //设置非标准浏览器版本号
    }
    //获取事件对象
    function getEvent() { 
        if (document.all) return window.event;   //document.all:指页面所有元素的集合(只有IE支持) 返回值window.event:指事件对象(只有IE支持)
        func = getEvent.caller;   //获取调用getEvent函数caller func可能的结果:类似function onclick(event){}这样的方法函数本体
        while (func != null) {    //遍历func,通过dfunc.arguments[0]获取到函数的第一个参数(event事件对象),如果事件对象为空,则通过func=func.caller重新给func赋值,直到取到满足条件的event事件对象
            var arg0 = func.arguments[0];  //获取触发本函数(getEvent)函数的第一个参数
            if (arg0) {
                //arg0.constructor:          constructor可能是Event也可能是MouseEvent
                //typeof (arg0) == "object": 判断arg0是否为对象
                //arg0.preventDefault:      判断preventDefault方法是否存在(preventDefault()的作用只要是通知web浏览器不要执行与事件关联的默认动作)
                //arg0.stopPropagation:      判断stopPropagation方法是否存在(stopPropagation()的作用是停止事件的传播,阻止它被分派到其他Document节点)
                if ((arg0.constructor == Event || arg0.constructor == MouseEvent) || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
                    return arg0;   //返回arg0
                }
            }
            func = func.caller;    //将func的caller赋值给func
        }
        return null;  //返回null
    }
    //判断参数值的变量类型是否等于‘undefined’如果等于就返回true,否则返回false
    function isUndefined(variable) {  
        return typeof variable == 'undefined' ? true : false;
    }
    //判断needle是否存在于haystack数组中
    function in_array(needle, haystack) {   //needle:指定值 haystack:数组集合
        if (typeof needle == 'string' || typeof needle == 'number') {    //判断变量needle的数据类型
            for (var i in haystack) {    //遍历haystack
                if (haystack[i] == needle) {  //判断haystack中是否有值等于needle
                    return true;    //如果有则返回true
                }
            }
        }
        return false;    //如果haystack中没有值等于needle就返回false
    }
    
    
     
    
  • 相关阅读:
    babel缓存 非常实用(8)
    source-map 非常实用(7)
    webpack -HMR-非常实用(6)
    eslint 语法检查(5)
    对css 的处理(4)
    python之再学习----简单的字符串
    windows下安装django的具体步骤和各种问题
    Linux常用命令
    转:程序中得到SVN的版本号
    vue实战(1):准备与资料整理
  • 原文地址:https://www.cnblogs.com/love-is/p/4289398.html
Copyright © 2020-2023  润新知