常用Common.js工具庫備份

常用Common.js工具庫備份

/**
 * @Date:   2017-01-08 15:26:37
 * @Last Modified time: 2017-01-08 16:16:59
 * @file name: common.js
 * @desc 對原生JS對象的擴展
 * Object扁誓、Array座每、String雏节、Date猴抹、Ajax薄辅、Cookie
 */

'use strict';;
(function() {
    Object.extend = function(targetObj, fnJson) {
        for (var fnName in fnJson) {
            targetObj[fnName] = fnJson[fnName];
        }
        return targetObj;
    };


    /**
     * 對Object的擴展
     */
    Object.extend(Object.prototype, {
        values: function() { // 一個靜態(tài)方法, 傳入一個對象, 返回該對象中所有屬性所對應的值, 構成數(shù)組返回
            var values = [];
            for (var property in this) values.push(this[property]); // 將每個屬性的值壓入到一個數(shù)組中
            return values;
        },
        clone: function(object) { // 一個靜態(tài)方法, 傳入一個對象, 克隆一個新對象并返回
            return Object.extend({}, object);
        },
        getType: function() {
            return Object.prototype.toString.call(this).match(/\[object (.*?)\]/)[1].toLowerCase();
        },
        toJson: function() {
            return JSON.stringify(this);
        },
        serialize: function() {
            if (JSON.parse)
                return JSON.parse(this);
            switch (this.constructor) {
                case Object:
                    var str = "{";
                    for (var o in obj) {
                        str += '"' + o + '"' + ":" + Serialize(obj[o]) + ",";
                    }
                    if (str.substr(str.length - 1) == ",")
                        str = str.substr(0, str.length - 1);
                    return str + "}";
                    break;
                case Array:
                    var str = "{";
                    if (str.substr(str.length - 1) == ",") {
                        str = str.substr(0, str.length - 1);
                    }
                    for (var o in obj) {
                        str += '"' + o + '"' + ":" + Serialize(obj[o]) + ",";
                    }
                    return str + "}";
                    break;
                case Boolean:
                    return "\"" + obj.toString() + "\"";
                    break;
                case Date:
                    return "\"" + obj.toString() + "\"";
                    break;
                case Function:
                    break;
                case Number:
                    return "\"" + obj.toString() + "\"";
                    break;
                case String:
                    return "\"" + obj.toString() + "\"";
                    break;
            }
        }
    });


    /**
     * 對Array的擴展
     */
    Object.extend(Array.prototype, {
        clear: function() {
            this.length = 0;
            return this;
        },
        lastIndexOfArr: function(obj) {
            if (this.lastIndexOf(obj)) {
                return this.lastIndexOf(obj);
            } else {
                this.reverse();
                return this.length - 1 - this.indexOfArr(obj);
            }
        },
        contain: function(obj) {
            return this.indexOfArr(obj) > -1;
        },
        insertAt: function(index, obj) {
            this.splice(index, 0, obj);
            return this;
        },
        removeAt: function(index) {
            this.splice(index, 1);
            return this;
        },
        first: function() {
            return this[0];
        },
        indexOfArr: function(obj) {
            //如果瀏覽器支持原生的indexOf,則調用原生的方法
            if (this.indexOf) {
                return this.indexOf(obj);
            } else {
                var i = 0;
                len = this.length;
                for (i; i < len; i++) {
                    if (this[i] == obj)
                        return i;
                    return -1;
                }
            }
        },
        last: function() {
            return this[this.length - 1];
        },
        distinct: function() {
            this.sort();
            var res = [this[0]];
            for (var i = 1; i < this.length; i++) {
                if (this[i] !== res[res.length - 1]) {
                    res.push(this[i]);
                }
            }
            return res;
        },
        sumNum: function() {
            if (this.reduce) {
                return this.reduce(function(partial, value) {
                    return partial + value;
                })
            } else {
                return eval(arr.join('+'));
            }
        },
        sortNumAsc: function() {
            this.sort(function(a, b) {
                return a - b;
            });
            return this;
        },
        sortNumDesc: function() {
            this.sort(function(a, b) {
                return b - a;
            });
            return this;
        },
        maxNum: function() {
            return this.sortNumAsc()[this.length - 1];
        },
        minNum: function() {
            return this.sortNumAsc()[0];
        },
        toUpperCase: function() {
            if (this.map) {
                return this.map.call(this, function(elem) {
                    return elem.toUpperCase();
                })
            } else {
                return this.toLocaleString().toUpperCase().split(',');
            }
        },
        toLowerCase: function() {
            if (this.map) {
                return this.map.call(this, function(elem) {
                    return elem.toLowerCase();
                })
            } else {
                return this.toLocaleString().toLowerCase().split(',');
            }

        }
    })


    /**
     * 對String的擴展
     */
    Object.extend(String.prototype, {
        /*
         *使用示例如下
         *var s = String.format("S{0}T{1}","n","e");//結果:SnTe
         */
        format: function() {
            var res = arguments[0];
            for (var i = 0, len = arguments.length - 1; i < len; i++) {
                var b = new Regexp("\\{" + i + "\\", "gm");
                res = res.replace(b, arguments[i + 1]);
            }
            return res;
        },
        append: function(str) {
            return this.concat(str);
        },
        leftpad: function(len, str) {
            if (arguments.length === 1) str = '0';
            var res = new StringBuilder();
            for (var i = 0, c = len - this.length; i < c; i++) {
                res.append(str);
            }
            res.append(this);
            return res.toString();
        },
        rightpad: function(len, str) {
            if (arguments.length === 1) str = '0';
            var res = new StringBuilder();
            res.append(this);
            for (var i = 0, c = len - this.length; i < c; i++) {
                res.append(str);
            }
            return res.toString();
        },
        trim: function() {
            return this.replace(/(^\s+)|(\s+$)/g, '');
        },
        ltrim: function() {
            return this.replace(/^\s+/g, '');
        },
        rtrim: function() {
            return this.replace(/\s+$/g, '');
        },
        startWith: function(str, ignorCase) {
            if (str.length > this.length) return false;
            if (ignorCase) {
                return this.toLowerCase().indexOf(str.toLowerCase()) === 0;
            } else {
                return this.indexOf(str) === 0;
            }
        },
        endWith: function(str, ignorCase) {
            if (str.length > this.length) return false;
            if (ignorCase) {
                return this.toLowerCase().lastIndexOf(str.toLowerCase()) === this.length - str.length;
            } else {
                return this.lastIndexOf(str) === this.length - str.length;
            }
        },
        removeCharAt: function(index) {
            if (index < 0 || index >= this.length) {
                return this.valueOf();
            } else if (index == 0) {
                return this.substring(1, this.length);
            } else if (index == this.length - 1) {
                return this.substring(0, this.length - 1);
            } else {
                return this.substring(0, index) + this.substring(index + 1);
            }
        },
        removeStr: function(start, end) {
            if (start == end) {
                return this.deleteCharAt(start);
            } else {
                if (start > end) {
                    var temp = start;
                    start = end;
                    end = temp;
                }
                if (start < 0) {
                    start = 0;
                }
                if (end > this.length - 1) {
                    end = this.length - 1;
                }
                return this.substring(0, start) + this.substring(end + 1, this.length);
            }

        },
        equalIgnoreCase: function(str) {
            return this.toLowerCase() === str.toLowerCase();
        },
        insertAfter: function(index, str) {
            return this.slice(0, index + 1) + str + this.slice(index + 1);
        },
        insertBefore: function(index, str) {
            return this.slice(0, index) + str + this.slice(index);
        },
        isAllNumber: function() {
            for (var i = 0; i < this.length; i++) {
                if (this.charAt(i) < '0' || this.charAt(i) > '9') {
                    return false;
                }
            }
            return true;
        },
        isInt: function() {
            return /^[1-9]\d$/.test(this);
        },
        isNullOrEmpty: function() {
            if (this === null || this.trim() === "") {
                return true;
            }
            return false;
        },
        isPhoneNum: function() {
            var pattern = /^0{0,1}(13[0-9]|14[6|7]|15[0-3]|15[5-9]|18[0-3]|18[5-9])[0-9]{8}$/;
            return pattern.test(this);
        },
        getCharLength: function() {
            var temp = 0;
            for (var i = 0; i < this.length; i++) {
                if (this.charCodeAt(i) > 255) {
                    temp += 2;
                } else {
                    temp += 1;
                }
            }
            return temp;
        },
        getNum: function() {
            return this.replace(/[^d]/g, "");
        },
        getEn: function() {
            return this.replace(/[^A-Za-z]/g, "");
        },
        getCn: function() {
            return this.replace(/[^u4e00-u9fa5uf900-ufa2d]/g, "");
        },
        left: function(n) {
            return this.slice(0, n);
        },
        right: function(n) {
            return this.slice(this.length - n);
        },
        encodeHTML: function() {
            if (this.isNullOrEmpty()) return this;
            var str = this;

            str = str.replace(/&/g, "&amp;");
            str = str.replace(/</g, "&lt;");
            str = str.replace(/>/g, "&gt;");
            str = str.replace(/\'/g, "&apos;");
            str = str.replace(/\"/g, "&quot;");
            str = str.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp;");
            str = str.replace(/\s+/g, " ");
            str = str.replace(/\s/g, "&nbsp;");
            str = str.replace(/\n/g, "&BR");

            return str;

        },
        decodeHTML: function() {
            if (this.isNullOrEmpty()) return this;
            var str = this;

            str = str.replace(/&amp;/g, "&");
            str = str.replace(/&lt;/g, "<");
            str = str.replace(/&gt;/g, ">");
            str = str.replace(/&apos;/g, "\'");
            str = str.replace(/&quot;/g, "\"");
            str = str.replace(/&nbsp;&nbsp;&nbsp;&nbsp;/g, "\t");
            str = str.replace(/&nbsp;/g, " ");
            str = str.replace(/&BR/g, "\r\n");

            return str;
        },
        truncate: function(len, str) {
            if (this.length <= len) {
                return this;
            } else {
                return this.substring(0, len) + str;
            }
        },
        getUrlQuery: function(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
            var r = this.substr(this.indexOf("\?") + 1).match(reg);
            if (r != null) return unescape(r[2]);
            return null;
        },
        appendUrlPram: function(name, val) {
            var index = this.indexOf(name + '=');
            if (index > 0) {
                var endPos = this.indexOf('&', index);
                if (endPos > index) return this.replace('/' + this.substr(index, endPos - index) + '/', name + '=' + val);
                else return this.substr(0, index) + name + '=' + val;
            } else return this.indexOf('?') > 0 ? (this + '&' + name + '=' + val) : (this + '?' + name + '=' + val);
        }
    });


    /**
     * 添加StringBuilder類析蝴,提高對字符串操作的效率
     */
    function StringBuilder(str) {
        this._strings = new Array();
        this.append(str);
    }
    Object.extend(StringBuilder.prototype, {
        append: function(str) {
            this._strings.push(a);
            return this;
        },
        toString: function() {
            var a = (arguments.length == 0) ? "" : arguments[0];
            return this._strings.join(a);
        }
    });


    /**
     * 對Date的擴展方法
     */
    Object.extend(Date.prototype, {
        format: function(formatStr) {
            var o = {
                'M+': this.getMonth() + 1, //月
                'd+': this.getDate(), //日
                'h+': this.getHours(), //小時
                'm+': this.getMinutes(), //分
                's+': this.getSeconds(), //秒
                'q+': Math.floor((this.getMonth() + 3) / 3), //季度
                'S': this.getMilliseconds() //毫秒
            }
            if (/(y+)/.test(formatStr)) {
                formatStr = formatStr.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
            }
            for (var k in o) {
                if (new RegExp("(" + k + ")").test(fomartStr))
                    formatStr = formatStr.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
                return formatStr;
            }
        },
        addDays: function(num) {
            this.setDate(this.getDate + num);
            return this;
        },
        addWeeks: function(num) {
            return this.addDays(num * 7);
        },
        addMonths: function(num) {
            var d = this.getDate();
            this.setMonth(this.getMonth() + num);
            if (this.getDate < d) {
                this.setDate(0);
            }
            return this;
        },
        addYears: function(num) {
            var m = this.getMonth();
            this.setFullYear(this.getFullYear() + num);
            if (m < this.getMonth()) {
                this.setDate(0);
            }
            return this;
        },
        isValiDate: function(dateStr, formatStr) {
            if (!dateStr) {
                return false;
            }
            if (!formatStr) {
                formatStr = "yyyy-MM-dd"; //默認格式:yyyy-MM-dd
            }
            if (dateStr.length != formatStr.length) {
                return false;
            } else {
                if (formatStr == "yyyy-MM-dd" || formatStr == "YYYY-MM-DD") {
                    var r1 = /^(((((([02468][048])|([13579][26]))(00))|(d{2}(([02468][48])|([13579][26]))))-((((0[13578])|(1[02]))-(([0-2][0-9])|(3[01])))|(((0[469])|(11))-(([0-2][0-9])|(30)))|(02-([0-2][0-9]))))|(d{2}(([02468][1235679])|([13579][01345789]))-((((0[13578])|(1[02]))-(([0-2][0-9])|(3[01])))|(((0[469])|(11))-(([0-2][0-9])|(30)))|(02-(([0-1][0-9])|(2[0-8]))))))$/;
                    return r1.test(dateStr);
                } else if (formatStr == "yyyy/MM/dd" || formatStr == "YYYY/MM/DD") {
                    var r2 = /^(((((([02468][048])|([13579][26]))(00))|(d{2}(([02468][48])|([13579][26]))))\/((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/([0-2][0-9]))))|(d{2}(([02468][1235679])|([13579][01345789]))\/((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/(([0-1][0-9])|(2[0-8]))))))$/;
                    return r2.test(dateStr);
                } else if (formatStr == "MM-dd-yyyy" || formatStr == "MM-DD-YYYY") {
                    var r3 = /^((((((0[13578])|(1[02]))-(([0-2][0-9])|(3[01])))|(((0[469])|(11))-(([0-2][0-9])|(30)))|(02-([0-2][0-9])))-(((([02468][048])|([13579][26]))(00))|(d{2}(([02468][48])|([13579][26])))))|(((((0[13578])|(1[02]))-(([0-2][0-9])|(3[01])))|(((0[469])|(11))-(([0-2][0-9])|(30)))|(02-(([0-1][0-9])|(2[0-8])))))-d{2}(([02468][1235679])|([13579][01345789])))$/;
                    return r3.test(dateStr);
                } else if (formatStr == "MM/dd/yyyy" || formatStr == "MM/DD/YYYY") {
                    var r4 = /^((((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/([0-2][0-9])))\/(((([02468][048])|([13579][26]))(00))|(d{2}(([02468][48])|([13579][26])))))|(((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/(([0-1][0-9])|(2[0-8])))))\/d{2}(([02468][1235679])|([13579][01345789])))$/;
                    return r4.test(dateStr);
                } else {
                    //                throw  new Error('日期格式不正確');
                    return false;
                }
            }
            return false;
        },
        isValiTime: function(timeStr, formatStr) {
            if (!timeStr) {
                return false;
            }
            if (!formatStr) {
                formatStr = "hh:mm:ss"; //默認格式:hh:mm:ss
            }
            if (timeStr.length != formatStr.length) {
                return false;
            } else {
                if (formatStr == "hh:mm:ss") {
                    var r1 = /^(([0-1][0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])$/;
                    return r1.test(timeStr);
                } else if (formatStr == "hh-mm-ss") {
                    var r2 = /^(([0-1][0-9])|(2[0-3]))-([0-5][0-9])-([0-5][0-9])$/;
                    return r2.test(timeStr);
                } else if (formatStr == "hh/mm/ss") {
                    var r3 = /^(([0-1][0-9])|(2[0-3]))\/([0-5][0-9])\/([0-5][0-9])$/;
                    return r3.test(timeStr);
                } else {
                    //                throw  new Error("時間格式不正確蜓堕!");
                    return false;
                }
            }
            return false;
        },
        isValiDateTime: function(dateTimeStr) {
            var dateTimeReg = /^(((((([02468][048])|([13579][26]))(00))|(d{2}(([02468][48])|([13579][26]))))-((((0[13578])|(1[02]))-(([0-2][0-9])|(3[01])))|(((0[469])|(11))-(([0-2][0-9])|(30)))|(02-([0-2][0-9]))))|(d{2}(([02468][1235679])|([13579][01345789]))-((((0[13578])|(1[02]))-(([0-2][0-9])|(3[01])))|(((0[469])|(11))-(([0-2][0-9])|(30)))|(02-(([0-1][0-9])|(2[0-8]))))))(s{1}(([0-1][0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9]))?$/
            return dateTimeReg.test(dateTimeStr);
        },
        isLeapYear: function() {
            return (this.getYear() % 4 == 0 && ((this.getYear() != 0) || (this.getYear() % 400 == 0)));
        },
        daysBetween: function(dateOne, dateTwo) {
            if ((dateOne instanceof Date) == false || (dateTwo instanceof Date) == false) {
                return 0;
            } else {
                return Math.abs(Math.floor((dateOne.getTime() - dateTwo.getTime()) / 1000 / 60 / 60 / 24));
            }
        },
        dateDiff: function(dtEnd, field) {
            var dtStart = this;
            if ((dtEnd instanceof Date) == false) {
                return 0;
            } else {
                if (!field) {
                    field = "d";
                }
                switch (field) {
                    case 'Y':
                    case 'y':
                        return dtEnd.getFullYear() - dtStart.getFullYear();
                        break;
                    case 'M':
                        return (dtEnd.getMonth() + 1) + ((dtEnd.getFullYear() - dtStart.getFullYear()) * 12) - (dtStart.getMonth() + 1);
                        break;
                    case 'W':
                    case 'w':
                        return parseInt((dtEnd - dtStart) / (86400000 * 7));
                        break;
                    case 'D':
                    case 'd':
                        return parseInt((dtEnd - dtStart) / 86400000);
                        break;
                    case 'H':
                    case 'h':
                        return parseInt((dtEnd - dtStart) / 3600000);
                        break;
                    case 'm':
                        return parseInt((dtEnd - dtStart) / 60000);
                        break;
                    case 'S':
                    case 's':
                        return parseInt((dtEnd - dtStart) / 1000);
                        break;
                    default:
                        return 0;
                }
                return 0;
            }
        },
        toArray: function() {
            var myArray = new Array();
            myArray[0] = this.getFullYear();
            myArray[1] = this.getMonth();
            myArray[2] = this.getDate();
            myArray[3] = this.getHours();
            myArray[4] = this.getMinutes();
            myArray[5] = this.getSeconds();
            return myArray;
        },
        datePart: function(field) {
            if (!field) {
                field = "d";
            }
            var Week = ['日', '一', '二', '三', '四', '五', '六'];
            switch (field) {
                case 'Y':
                case 'y':
                    return this.getFullYear();
                    break;
                case 'M':
                    return (this.getMonth() + 1);
                    break;
                case 'W':
                case 'w':
                    return Week[this.getDay()];
                    break;
                case 'D':
                case 'd':
                    return this.getDate();
                    break;
                case 'H':
                case 'h':
                    return this.getHours();
                    break;
                case 'm':
                    return this.getMinutes();
                    break;
                case 's':
                    return this.getSeconds();
                    break;
                default:
                    return this.getDate();
            }
            return this.getDate();
        }
    });


    /**
     * 對ajax的擴展
     * 調用示例:
     * new HttpAjax({
            type:"get",
            url:"testAjax.php",
            data:{"name":'Jack'},
            success:function(data){
                console.log(data);
            },
            failure:function(data){
                console.log(data);
            },
            isAsyn:false
        });
     */
    HttpAjax = (function() {
        function HttpAjax(options) {
            var settings = {
                type: 'post', //請求類型
                url: '', //請求地址
                data: { "id": -1 }, //json格式的參數(shù)
                success: function() {}, //成功的回調函數(shù)
                failure: function() {}, //失敗的回調函數(shù)
                isAsyn: true //是否為異步
            };
            this.options = Object.extend(settings, options);

            Object.extend(HttpAjax.prototype, {
                _createXhr: function() {
                    if (typeof XMLHttpRequest !== 'undefined') {
                        return new XMLHttpRequest();
                    } else if (typeof ActiveXObject !== 'undefined') {
                        var versions = ['MSXML2.XMLHttp.6.0', 'MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp'];
                        for (var i = 0, len = versions.length; i < len; i++) {
                            try {
                                var xhr = new ActiveXObject(versions[i]);
                                this.IsCreateOk = versions[i];
                                return xhr;
                            } catch (e) {}
                        }
                        if (typeof this.IsCreateOk === 'undefined') {
                            throw new Error("您的瀏覽器版本過低,無法創(chuàng)建異步對象苗膝,請升級您的瀏覽器殃恒!");
                        }
                    }
                },
                _encodeData: function(paramters) {
                    var data = [];
                    for (var name in paramters) {
                        //將數(shù)組中的數(shù)據(jù)以=拼接后再添加到data數(shù)組中 [name=aa,age=11]
                        var _regesp = /%20/g; //空格的正則表達式
                        var _value = paramters[name].toString(); //獲取值
                        data.push(encodeURIComponent(name).replace(_regesp, '+') + "=" + encodeURIComponent(_value).replace(_regesp, '+'));
                    }
                    //以&將數(shù)組元素拼接后返回 如:name=aa&age=11
                    return data.join("&");
                },
                _regCallback: function(xhr) {
                    var _this = this;
                    xhr.onreadystatechange = function() {
                        if (xhr.readyState == 4) {
                            if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 300) {
                                _this.options.success(_this._getResponseData(xhr), xhr.statusText);
                            } else {
                                _this.options.failure(xhr.status, xhr.statusText);
                            }
                        }
                    }
                },
                _getResponseData: function(xhr) {
                    var responseType = xhr.getResponseHeader("Content-Type");
                    switch (responseType) {
                        case 'text/xml':
                            return xhr.responseXML;
                        case 'text/json':
                        case 'text/javascript':
                        case 'application/javascript':
                        case 'application/x-javascript':
                            return eval('(' + xhr.responseText + ')');
                        default:
                            return xhr.responseText;
                    };
                },
                _init: function(options) {
                    this.options = options;
                    if (this.options.url == "") return;
                    this.xhr = this._createXhr(); //創(chuàng)建異步對象
                    this._regCallback(this.xhr); //注冊回調事件

                    //根據(jù)請求類型,發(fā)送異步請求
                    if (this.options.type.toLowerCase() == "post") {
                        this._post(this.xhr);
                    } else {
                        this._get(this.xhr);
                    }
                },
                _post: function(xhr) {
                    this.xhr = xhr;
                    this.data = this._encodeData(this.options.data);
                    this.url = this.options.url + "?d=" + parseInt(Math.random() * 100 + 1, 10);
                    this.asyn = !!this.options.isAsyn;

                    xhr.open("POST", this.url, this.asyn);
                    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    xhr.send(this.data);
                },
                _get: function(xhr) {
                    this.xhr = xhr;
                    this.data = this._encodeData(this.options.data);
                    this.url = this.options.url + '?' + this.data + '&d=' + parseInt(Math.random() * 100 + 1, 10);
                    this.asyn = !!this.options.isAsyn;

                    xhr.open('GET', this.url, this.asyn);
                    xhr.send(null);
                }
            });
            this._init(this.options);
        };
        return HttpAjax;
    })(window);


    /**
     * 對cookie的擴展
     */
    Object.extend(Document.cookie.prototype, {
        setCookie: function(name, value, days) {
            var d = new Date();
            d.setDate(d.getDate() + days);
            document.cookie = name + '=' + value + ';expires' + d;
        },
        getCookie: function(name) {
            var arr = document.cookie.split(',');
            for (var i = 0, len = arr.length; i < len; i++) {
                var keyV = arr[i].split('=');
                if (keyV[0] == name) {
                    return keyV[1];
                }
            }
            return '';
        },
        removeCookie: function(name) {
            setCookie(name, '', -1);
        }
    });


})(window)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末辱揭,一起剝皮案震驚了整個濱河市离唐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌问窃,老刑警劉巖亥鬓,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異域庇,居然都是意外死亡嵌戈,警方通過查閱死者的電腦和手機覆积,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熟呛,“玉大人技健,你說我怎么就攤上這事《韫埃” “怎么了雌贱?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長偿短。 經(jīng)常有香客問我欣孤,道長,這世上最難降的妖魔是什么昔逗? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任降传,我火速辦了婚禮,結果婚禮上勾怒,老公的妹妹穿的比我還像新娘婆排。我一直安慰自己,他們只是感情好笔链,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布段只。 她就那樣靜靜地躺著,像睡著了一般鉴扫。 火紅的嫁衣襯著肌膚如雪赞枕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天坪创,我揣著相機與錄音炕婶,去河邊找鬼。 笑死莱预,一個胖子當著我的面吹牛柠掂,可吹牛的內容都是我干的。 我是一名探鬼主播依沮,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼涯贞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悉抵?” 一聲冷哼從身側響起肩狂,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姥饰,沒想到半個月后傻谁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡列粪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年审磁,在試婚紗的時候發(fā)現(xiàn)自己被綠了谈飒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡态蒂,死狀恐怖杭措,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情钾恢,我是刑警寧澤手素,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站瘩蚪,受9級特大地震影響泉懦,放射性物質發(fā)生泄漏。R本人自食惡果不足惜疹瘦,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一崩哩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧言沐,春花似錦邓嘹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鸯乃,卻和暖如春鲸阻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缨睡。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陈辱,地道東北人奖年。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像沛贪,于是被迫代替她去往敵國和親陋守。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容

  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,393評論 7 249
  • 用到的組件 1中燥、通過CocoaPods安裝 2、第三方類庫安裝 3塘偎、第三方服務 友盟社會化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 14,619評論 1 180
  • 早上我們早早的起了疗涉,這幾天早起我們都夠累的了拿霉,這幾天感覺睡眠都不夠了只能在大巴車上睡,然而我們先去了乳膠展示廳咱扣,這...
    IversonKobe3824閱讀 349評論 0 1
  • 這雞年的春兒绽淘,當然得由咱姐妹兒幾個來開道喲! 你瞅蠶豆這一溜溜兒的媚眼闹伪,你能不覺著春光美嗎沪铭? 介幾個探頭探腦的蠶豆...
    鈴蘭空地閱讀 235評論 0 1
  • 一席之地 是一張疲乏的軀殼可以歇息的床板 你的臂膀 是心靈深處最渴望的甘泉 她給予的不是溫飽 是生存的意識 是想要...
    小糊童Mr閱讀 140評論 0 0