Discuz common.js代码注释(二)

//获取浏览器版本号
function browserVersion(types) {
    var other = 1;    //默认版本号
    for (i in types) {  //遍历types
        var v = types[i] ? types[i] : 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;
        } 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
}
时间: 2024-08-05 14:35:49

Discuz common.js代码注释(二)的相关文章

Discuz common.js代码注释

/* [Discuz!] (C)2001-2099 Comsenz Inc. This is NOT a freeware, use is subject to license terms $Id: common.js 2105 2014-06-23 09:34:12Z hypowang $ */ //封装获取为指定id的文档对象 //如果为空则返回null function $(id) { return !id ? null : document.getElementById(id); } f

Discuz common.js代码注释(三)

/** * 去除字符串左右两端的空格 */ function trim(str) { return (str + '').replace(/(\s+)$/g, '').replace(/^\s+/g, ''); } /** * 获取字符串长度(兼容IE:如果是IE,并且有换行符(\n)则替换为‘_’然后再计算长度) */ function strlen(str) { //获取字符串长度 return (BROWSER.ie && str.indexOf('\n') != -1) ? str

从阅读Discuz的核心代码并给出注释的经历分析程序员该如何阅读代码?

本文标签:   程序员 php Discuz的核心代码 框架 深度学习框架 阅读优秀的代码,是技术水平成长的最佳途径.记得每个进来的新人,我都做过阅读优秀代码的要求,但几乎都只能坚持很少一段时间而已. 前晚大家还在开玩笑的讨论,都是因为看了前人的一些写法,才学会了一些乱七八糟的花招. 晚上我又开始重新阅读Discuz的核心代码,花了1h多的时间,才完成一个core文件的注释. 注释后的代码: <?php /** * [Discuz!] (C)2001-2099 Comsenz Inc. * Th

js/javascript代码注释规范与示例

注释在代码编写过程中的重要性,写代码超过半年的就能深深的体会到.没有注释的代码都不是好代码.为了别人学习,同时为了自己以后对代码进行‘升级’,看看js/javascript代码注释规范与示例.来自:http://www.56.com/style/-doc-/v1/tpl/js_dev_spec/spec-comment.html 文件注释 文件注释位于文件的最前面,应包括文件的以下信息:概要说明及版本(必须)项目地址(开源组件必须)版权声明(必须)开源协议(开源组件必须)版本号(必须)修改时间(

【JS 设计模式 】用组合模式来实现树形导航--JS代码结构思路分析(二)

[JS 设计模式 ]用组合模式来实现树形导航--代码结构思路分析(一) 根据上一节中的HTML代码结构我们通过JS来渲染HTML代码,我们先提供一下JS的代码片段,这代码代码不是一个完整的代码是经过简化的.通过JS代码来分析如何组装HTML的 Composite类型的代码: function TreeComposite(id, name, total, level, last) { var root = document.createDocumentFragment(); var panel =

编写高质量JS代码的68个有效方法(二)

[20141011]编写高质量JS代码的68个有效方法(二) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table,

RequireJS入门之二——第二例(调用自己的JS代码)

第一节遗留的问题: 中文乱码:  修改require.js文件,搜索charset 关键字,修改为GBK: 路      径:  仅介绍main.js中的路径设置:1. 可以设置baseUrl根路径:如,把jquery放在根目录下js文件夹,可以这样     若放在js/lib中,这样: ./ 可以省略:页面引入方式类似:引入时   data-main="./js/main"  属性是由RequireJS定义的,默认省略写.js 本节需求:编写一个选择器通过根据id.class.Tag

关于common.js里面的module.exports与es6的export default的思考总结

背景 公司项目需要裁切功能,基于第三方图片裁切组件vue-cropper(0.4.0版本),封装了图片裁切组件(picture-cut)(放在公司内部组件库,仅限于公司内部使用) 在vue-cropper从0.4.0更新到0.4.4后,picture-cut组件使用裁切功能时报错 vue-cropper0.4.0的index.js文件导出方式如下 var vueCropper = require('./vue-cropper') module.exports = vueCropper vue-c

DZ3.2文章内容页代码注释,很不错的。

DZ3.2文章内容页代码注释,很不错的.<!--{template common/header}--><!--e之路网络科技--文章页--> <script type="text/javascript" src="{$_G['setting']['jspath']}forum_viewthread.js?{VERHASH}"></script><script type="text/javascript&