亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

常用的JavaScript WEB操作方法分享

2019-11-20 13:05:07
字體:
來源:轉載
供稿:網友

數組方法集

Angela.array = {  //# 數組方法  // index, 返回位置! 不存在則返回 -1;  index: function (t, arr) { //# 返回當前值所在數組的位置    if (arr.indexOf) {      return arr.indexOf(t);    }    for (var i = arr.length ; i--;) {      if (arr[i] === t) {        return i * 1;      }    };    return -1;  }  //返回對象 的 鍵值! 返回值 類型為數組。  , getKey: function (data) { //# 返回對象所有的鍵值    var arr = []      , k    ;    for (k in data) {      arr.push(k);    };    return arr;  }  //從數組中 隨機取出 一個值  , random: function (arrays) { //# 從數組中 隨機取出 一個值    arrays = arrays || [];    var len = arrays.length      , index = Tydic.math.randInt(0, len - 1)    ;    return arrays[index] || '';  }  // 一維 數組去重  , unique: function (array) { //#一維數組去重    array = array || [];    for (var i = 0, len = array.length; i < len; i++) {      for (var j = i + 1; j < array.length; j++) {        if (array[i] === array[j]) {          array.splice(j, 1);          j--;        }      }    }    return array;  }  // max , 數組中最大的項  , max: function (array) {//#求數組中最大的項    return Math.max.apply(null, array);  }  // min , 數組中最小的項  , min: function (array) { //#求數組中最小的項    return Math.min.apply(null, array);  }  // remove , 移除  , remove: function (array, value) { //#移除數組中某值    var length = array.length;    while (length--) {      if (value === array[length]) {        array.splice(length, 1);      }    }    return array;  }  //清空數組  , empty: function (array) { //# 清空數組    (array || []).length = 0;    return array;  }  // removeAt ,刪除指定位置的 值  //@index , 索引. 不傳遞 index ,會刪除第一個  , removeAt: function (array, index) { //#刪除數組中 指定位置的值    array.splice(index, 1);    return array;  }  //打亂數組排序  , shuffle: function (arr) { //#打亂數組排序    var array = (arr || []).concat()      , length = array.length      , i = length //遍歷      , tmp = null // 臨時      , rand = Tydic.math.randInt //位置      , pos = 0    ;    while (i--) {      pos = rand(0, length);      //交換隨機位置      tmp = array[pos];      array[pos] = array[i];      array[i] = tmp;    }    return array;  }};

cookie方法集

Angela.cookie = { //# Cookie  // 瀏覽器是夠支持 cookie  enable: !!navigator.cookieEnabled  //讀取COOKIE  , get: function (name) { //#讀取 cookie    var reg = new RegExp("(^| )" + name + "(?:=([^;]*))?(;|$)")      , val = document.cookie.match(reg)    ;    return val ? (val[2] ? unescape(val[2]) : "") : '';  }  //寫入COOKIES  , set: function (name, value, expires, path, domain, secure) { //# 寫入 cookie    var exp = new Date()      , expires = arguments[2] || null      , path = arguments[3] || "/"      , domain = arguments[4] || null      , secure = arguments[5] || false    ;    expires ? exp.setMinutes(exp.getMinutes() + parseInt(expires)) : "";    document.cookie = name + '=' + escape(value) + (expires ? ';expires=' + exp.toGMTString() : '') + (path ? ';path=' + path : '') + (domain ? ';domain=' + domain : '') + (secure ? ';secure' : '');  }  //刪除cookie  , del: function (name, path, domain, secure) { //#刪除 cookie    var value = $getCookie(name);    if (value != null) {      var exp = new Date();      exp.setMinutes(exp.getMinutes() - 1000);      path = path || "/";      document.cookie = name + '=;expires=' + exp.toGMTString() + (path ? ';path=' + path : '') + (domain ? ';domain=' + domain : '') + (secure ? ';secure' : '');    }  }};

url方法集

Angela.url = { //#URL  //參數:變量名,url為空則表從當前頁面的url中取  getQuery: function (name, url) {    var u = arguments[1] || window.location.search      , reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)")      , r = u.substr(u.indexOf("?") + 1).match(reg)    ;    return r != null ? r[2] : "";  }  , getHash: function (name, url) { //# 獲取 hash值    var u = arguments[1] || location.hash;    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");    var r = u.substr(u.indexOf("#") + 1).match(reg);    if (r != null) {      return r[2];    }    return "";  }  , parse: function (url) { //# 解析URL    var a = document.createElement('a');    url = url || document.location.href;    a.href = url;    return {      source: url      , protocol: a.protocol.replace(':', '')      , host: a.hostname      , port: a.port      , query: a.search      , file: (a.pathname.match(/([^//?#]+)$/i) || [, ''])[1]      , hash: a.hash.replace('#', '')      , path: a.pathname.replace(/^([^//])/, '/$1')      , relative: (a.href.match(/tps?:////[^//]+(.+)/) || [, ''])[1]      , segments: a.pathname.replace(/^///, '').split('/')    };  }};

正則表達式方法集

Angela.regExp = { //# 字符串匹配  //是否為 數字!整數,浮點數  isNum: function (num) { //# 是否為數組    return !isNaN(num);  }  , isEmail: function (mail) {//# 是否為 郵箱    return /^([a-z0-9]+[_/-/.]?)*[a-z0-9]+@([a-z0-9]+[_/-/.]?)*[a-z0-9]+/.[a-z]{2,5}$/i.test(mail);  }  , isIdCard: function (card) { //# 是否為 身份證    return /^(/d{14}|/d{17})(/d|[xX])$/.test(card);  }  , isMobile: function (mobile) { //# 是否為 手機    return /^0*1/d{10}$/.test(mobile);  }  , isQQ: function (qq) { //# 是否為 QQ    return /^[1-9]/d{4,10}$/.test(qq);  }  , isTel: function (tel) { //# 是否為 電話    return /^/d{3,4}-/d{7,8}(-/d{1,6})?$/.text(tel);  }  , isUrl: function (url) { //# 是否為 URL    return /https?:////[a-z0-9/./-]{1,255}/.[0-9a-z/-]{1,255}/i.test(url);  }  , isColor: function (color) { //# 是否為 16進制顏色    return /#([/da-f]{3}){1,2}$/i.test(color);  }  //@id : 身份證 ,  // @now : 當前時間 如:new Date('2013/12/12') , '2013/12/12'  // @age : 允許的年齡  , isAdult: function (id, allowAge, now) { //# 是否年齡是否成年    var age = 0 // 用戶 年月日      , nowDate = 0 //當前年月日    ;    allowAge = parseFloat(allowAge) || 18;    now = typeof now == 'string' ? new Date(now) : (now || new Date());    if (!this.isIdCard(id)) {      return false;    }    //15位身份證    if (15 == id.length) {      age = '19' + id.slice(6, 6);    } else {      age = id.slice(6, 14);    }    // 類型轉換 整型    age = ~~age;    nowDate = ~~(Tydic.date.format('YYYYMMDD', now));    //比較年齡    if (nowDate - age < allowAge * 1e4) {      return false;    }    return true;  }  //浮點數  , isFloat: function (num) { //# 是否為 浮點數    return /^(([1-9]/d*)|(/d+/./d+)|0)$/.test(num);  }  //正整數  , isInt: function (num) { //# 是否為 正整數    return /^[1-9]/d*$/.test(num);  }  //是否全為漢字  , isChinese: function (str) { //# 是否全為 漢字    return /^([/u4E00-/u9FA5]|[/uFE30-/uFFA0])+$/gi.test(str);  }};

字符串方法集

Angela.string = { //# 字符串  codeHtml: function (content) { //# 轉義 HTML 字符    return this.replace(content, {      '&': "&"      , '"': """      , "'": '''      , '<': "<"      , '>': ">"      , ' ': " "      , '/t': "	"      , '(': "("      , ')': ")"      , '*': "*"      , '+': "+"      , ',': ","      , '-': "-"      , '.': "."      , '/': "/"      , '?': "?"      , '//': "\"      , '/n': "<br>"    });  }  //重復字符串  , repeat: function (word, length, end) { //# 重復字符串    end = end || ''; //加在末位    length = ~~length;    return new Array(length * 1 + 1).join(word) + '' + end;  }  //增加前綴  , addPre: function (pre, word, size) { //# 補齊。如給數字前 加 0    pre = pre || '0';    size = parseInt(size) || 0;    word = String(word || '');    var length = Math.max(0, size - word.length);    return this.repeat(pre, length, word);  }  //去除兩邊空格  , trim: function (text) { //# 去除兩邊空格    return (text || '').replace(/^/s+|/s$/, '');  }  //字符串替換  , replace: function (str, re) { //# 字符串替換    str = str || '';    for (var key in re) {      replace(key, re[key]);    };    function replace(a, b) {      var arr = str.split(a);      str = arr.join(b);    };    return str;  }  , xss: function (str, type) { //# XSS 轉義    //空過濾    if (!str) {      return str === 0 ? "0" : "";    }    switch (type) {      case "html": //過濾html字符串中的XSS        return str.replace(/[&'"<>/////-/x00-/x09/x0b-/x0c/x1f/x80-/xff]/g, function (r) {          return "&#" + r.charCodeAt(0) + ";"        }).replace(/ /g, " ").replace(//r/n/g, "<br />").replace(//n/g, "<br />").replace(//r/g, "<br />");        break;      case "htmlEp": //過濾DOM節點屬性中的XSS        return str.replace(/[&'"<>/////-/x00-/x1f/x80-/xff]/g, function (r) {          return "&#" + r.charCodeAt(0) + ";"        });        break;      case "url": //過濾url        return escape(str).replace(//+/g, "%2B");        break;      case "miniUrl":        return str.replace(/%/g, "%25");        break;      case "script":        return str.replace(/[//"']/g, function (r) {          return "http://" + r;        }).replace(/%/g, "http://x25").replace(//n/g, "http://n").replace(//r/g, "http://r").replace(//x01/g, "http://x01");        break;      case "reg":        return str.replace(/[///^/$/*/+/?/{/}/./(/)/[/]]/g, function (a) {          return "http://" + a;        });        break;      default:        return escape(str).replace(/[&'"<>/////-/x00-/x09/x0b-/x0c/x1f/x80-/xff]/g, function (r) {          return "&#" + r.charCodeAt(0) + ";"        }).replace(/ /g, " ").replace(//r/n/g, "<br />").replace(//n/g, "<br />").replace(//r/g, "<br />");        break;    }  }  // badword , 過濾敏感詞  //@text : 要過濾的文本 , 類型 :字符串  //@words : 敏感詞 ,類型,數組, 如 : ['你妹', '我丟' ,'我靠']  // 如果 用 正則匹配, text 長度 100萬,words 100萬,需要 4秒!  , badWord: function (text, words) { //# 敏感詞過濾    text = String(text || '');    words = words || [];    var reg = new RegExp(words.join('|'), 'g')      , _self = this;    return text.replace(reg, function ($0) {      var length = String($0 || '').length;      return _self.repeat('*', length);    });  }};

加密方法集

Angela.encrypt = { //# 加密  md5: function (words) { //# md5 哈希算法    /*     * Crypto-JS 3.1.2     * http://code.google.com/p/crypto-js     */    var CryptoJS = function (s, p) {      var m = {}, l = m.lib = {}, n = function () { }, r = l.Base = { extend: function (b) { n.prototype = this; var h = new n; b && h.mixIn(b); h.hasOwnProperty("init") || (h.init = function () { h.$super.init.apply(this, arguments) }); h.init.prototype = h; h.$super = this; return h }, create: function () { var b = this.extend(); b.init.apply(b, arguments); return b }, init: function () { }, mixIn: function (b) { for (var h in b) b.hasOwnProperty(h) && (this[h] = b[h]); b.hasOwnProperty("toString") && (this.toString = b.toString) }, clone: function () { return this.init.prototype.extend(this) } }, q = l.WordArray = r.extend({ init: function (b, h) { b = this.words = b || []; this.sigBytes = h != p ? h : 4 * b.length }, toString: function (b) { return (b || t).stringify(this) }, concat: function (b) { var h = this.words, a = b.words, j = this.sigBytes; b = b.sigBytes; this.clamp(); if (j % 4) for (var g = 0; g < b; g++) h[j + g >>> 2] |= (a[g >>> 2] >>> 24 - 8 * (g % 4) & 255) << 24 - 8 * ((j + g) % 4); else if (65535 < a.length) for (g = 0; g < b; g += 4) h[j + g >>> 2] = a[g >>> 2]; else h.push.apply(h, a); this.sigBytes += b; return this }, clamp: function () { var b = this.words, h = this.sigBytes; b[h >>> 2] &= 4294967295 << 32 - 8 * (h % 4); b.length = s.ceil(h / 4) }, clone: function () { var b = r.clone.call(this); b.words = this.words.slice(0); return b }, random: function (b) { for (var h = [], a = 0; a < b; a += 4) h.push(4294967296 * s.random() | 0); return new q.init(h, b) } }), v = m.enc = {}, t = v.Hex = { stringify: function (b) { var a = b.words; b = b.sigBytes; for (var g = [], j = 0; j < b; j++) { var k = a[j >>> 2] >>> 24 - 8 * (j % 4) & 255; g.push((k >>> 4).toString(16)); g.push((k & 15).toString(16)) } return g.join("") }, parse: function (b) { for (var a = b.length, g = [], j = 0; j < a; j += 2) g[j >>> 3] |= parseInt(b.substr(j, 2), 16) << 24 - 4 * (j % 8); return new q.init(g, a / 2) } }, a = v.Latin1 = { stringify: function (b) { var a = b.words; b = b.sigBytes; for (var g = [], j = 0; j < b; j++) g.push(String.fromCharCode(a[j >>> 2] >>> 24 - 8 * (j % 4) & 255)); return g.join("") }, parse: function (b) { for (var a = b.length, g = [], j = 0; j < a; j++) g[j >>> 2] |= (b.charCodeAt(j) & 255) << 24 - 8 * (j % 4); return new q.init(g, a) } }, u = v.Utf8 = { stringify: function (b) { try { return decodeURIComponent(escape(a.stringify(b))) } catch (g) { throw Error("Malformed UTF-8 data"); } }, parse: function (b) { return a.parse(unescape(encodeURIComponent(b))) } },        g = l.BufferedBlockAlgorithm = r.extend({ reset: function () { this._data = new q.init; this._nDataBytes = 0 }, _append: function (b) { "string" == typeof b && (b = u.parse(b)); this._data.concat(b); this._nDataBytes += b.sigBytes }, _process: function (b) { var a = this._data, g = a.words, j = a.sigBytes, k = this.blockSize, m = j / (4 * k), m = b ? s.ceil(m) : s.max((m | 0) - this._minBufferSize, 0); b = m * k; j = s.min(4 * b, j); if (b) { for (var l = 0; l < b; l += k) this._doProcessBlock(g, l); l = g.splice(0, b); a.sigBytes -= j } return new q.init(l, j) }, clone: function () { var b = r.clone.call(this); b._data = this._data.clone(); return b }, _minBufferSize: 0 }); l.Hasher = g.extend({ cfg: r.extend(), init: function (b) { this.cfg = this.cfg.extend(b); this.reset() }, reset: function () { g.reset.call(this); this._doReset() }, update: function (b) { this._append(b); this._process(); return this }, finalize: function (b) { b && this._append(b); return this._doFinalize() }, blockSize: 16, _createHelper: function (b) { return function (a, g) { return (new b.init(g)).finalize(a) } }, _createHmacHelper: function (b) { return function (a, g) { return (new k.HMAC.init(b, g)).finalize(a) } } }); var k = m.algo = {}; return m    }(Math);    (function (s) {      function p(a, k, b, h, l, j, m) { a = a + (k & b | ~k & h) + l + m; return (a << j | a >>> 32 - j) + k } function m(a, k, b, h, l, j, m) { a = a + (k & h | b & ~h) + l + m; return (a << j | a >>> 32 - j) + k } function l(a, k, b, h, l, j, m) { a = a + (k ^ b ^ h) + l + m; return (a << j | a >>> 32 - j) + k } function n(a, k, b, h, l, j, m) { a = a + (b ^ (k | ~h)) + l + m; return (a << j | a >>> 32 - j) + k } for (var r = CryptoJS, q = r.lib, v = q.WordArray, t = q.Hasher, q = r.algo, a = [], u = 0; 64 > u; u++) a[u] = 4294967296 * s.abs(s.sin(u + 1)) | 0; q = q.MD5 = t.extend({        _doReset: function () { this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (g, k) {          for (var b = 0; 16 > b; b++) { var h = k + b, w = g[h]; g[h] = (w << 8 | w >>> 24) & 16711935 | (w << 24 | w >>> 8) & 4278255360 } var b = this._hash.words, h = g[k + 0], w = g[k + 1], j = g[k + 2], q = g[k + 3], r = g[k + 4], s = g[k + 5], t = g[k + 6], u = g[k + 7], v = g[k + 8], x = g[k + 9], y = g[k + 10], z = g[k + 11], A = g[k + 12], B = g[k + 13], C = g[k + 14], D = g[k + 15], c = b[0], d = b[1], e = b[2], f = b[3], c = p(c, d, e, f, h, 7, a[0]), f = p(f, c, d, e, w, 12, a[1]), e = p(e, f, c, d, j, 17, a[2]), d = p(d, e, f, c, q, 22, a[3]), c = p(c, d, e, f, r, 7, a[4]), f = p(f, c, d, e, s, 12, a[5]), e = p(e, f, c, d, t, 17, a[6]), d = p(d, e, f, c, u, 22, a[7]), c = p(c, d, e, f, v, 7, a[8]), f = p(f, c, d, e, x, 12, a[9]), e = p(e, f, c, d, y, 17, a[10]), d = p(d, e, f, c, z, 22, a[11]), c = p(c, d, e, f, A, 7, a[12]), f = p(f, c, d, e, B, 12, a[13]), e = p(e, f, c, d, C, 17, a[14]), d = p(d, e, f, c, D, 22, a[15]), c = m(c, d, e, f, w, 5, a[16]), f = m(f, c, d, e, t, 9, a[17]), e = m(e, f, c, d, z, 14, a[18]), d = m(d, e, f, c, h, 20, a[19]), c = m(c, d, e, f, s, 5, a[20]), f = m(f, c, d, e, y, 9, a[21]), e = m(e, f, c, d, D, 14, a[22]), d = m(d, e, f, c, r, 20, a[23]), c = m(c, d, e, f, x, 5, a[24]), f = m(f, c, d, e, C, 9, a[25]), e = m(e, f, c, d, q, 14, a[26]), d = m(d, e, f, c, v, 20, a[27]), c = m(c, d, e, f, B, 5, a[28]), f = m(f, c, d, e, j, 9, a[29]), e = m(e, f, c, d, u, 14, a[30]), d = m(d, e, f, c, A, 20, a[31]), c = l(c, d, e, f, s, 4, a[32]), f = l(f, c, d, e, v, 11, a[33]), e = l(e, f, c, d, z, 16, a[34]), d = l(d, e, f, c, C, 23, a[35]), c = l(c, d, e, f, w, 4, a[36]), f = l(f, c, d, e, r, 11, a[37]), e = l(e, f, c, d, u, 16, a[38]), d = l(d, e, f, c, y, 23, a[39]), c = l(c, d, e, f, B, 4, a[40]), f = l(f, c, d, e, h, 11, a[41]), e = l(e, f, c, d, q, 16, a[42]), d = l(d, e, f, c, t, 23, a[43]), c = l(c, d, e, f, x, 4, a[44]), f = l(f, c, d, e, A, 11, a[45]), e = l(e, f, c, d, D, 16, a[46]), d = l(d, e, f, c, j, 23, a[47]), c = n(c, d, e, f, h, 6, a[48]), f = n(f, c, d, e, u, 10, a[49]), e = n(e, f, c, d,                C, 15, a[50]), d = n(d, e, f, c, s, 21, a[51]), c = n(c, d, e, f, A, 6, a[52]), f = n(f, c, d, e, q, 10, a[53]), e = n(e, f, c, d, y, 15, a[54]), d = n(d, e, f, c, w, 21, a[55]), c = n(c, d, e, f, v, 6, a[56]), f = n(f, c, d, e, D, 10, a[57]), e = n(e, f, c, d, t, 15, a[58]), d = n(d, e, f, c, B, 21, a[59]), c = n(c, d, e, f, r, 6, a[60]), f = n(f, c, d, e, z, 10, a[61]), e = n(e, f, c, d, j, 15, a[62]), d = n(d, e, f, c, x, 21, a[63]); b[0] = b[0] + c | 0; b[1] = b[1] + d | 0; b[2] = b[2] + e | 0; b[3] = b[3] + f | 0        }, _doFinalize: function () { var a = this._data, k = a.words, b = 8 * this._nDataBytes, h = 8 * a.sigBytes; k[h >>> 5] |= 128 << 24 - h % 32; var l = s.floor(b / 4294967296); k[(h + 64 >>> 9 << 4) + 15] = (l << 8 | l >>> 24) & 16711935 | (l << 24 | l >>> 8) & 4278255360; k[(h + 64 >>> 9 << 4) + 14] = (b << 8 | b >>> 24) & 16711935 | (b << 24 | b >>> 8) & 4278255360; a.sigBytes = 4 * (k.length + 1); this._process(); a = this._hash; k = a.words; for (b = 0; 4 > b; b++) h = k[b], k[b] = (h << 8 | h >>> 24) & 16711935 | (h << 24 | h >>> 8) & 4278255360; return a }, clone: function () { var a = t.clone.call(this); a._hash = this._hash.clone(); return a }      }); r.MD5 = t._createHelper(q); r.HmacMD5 = t._createHmacHelper(q)    })(Math);    return CryptoJS.MD5(words).toString();  }  // sha1  , sha1: function (words) { //# sha1 哈希算法    var CryptoJS = function (e, m) { var p = {}, j = p.lib = {}, l = function () { }, f = j.Base = { extend: function (a) { l.prototype = this; var c = new l; a && c.mixIn(a); c.hasOwnProperty("init") || (c.init = function () { c.$super.init.apply(this, arguments) }); c.init.prototype = c; c.$super = this; return c }, create: function () { var a = this.extend(); a.init.apply(a, arguments); return a }, init: function () { }, mixIn: function (a) { for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]); a.hasOwnProperty("toString") && (this.toString = a.toString) }, clone: function () { return this.init.prototype.extend(this) } }, n = j.WordArray = f.extend({ init: function (a, c) { a = this.words = a || []; this.sigBytes = c != m ? c : 4 * a.length }, toString: function (a) { return (a || h).stringify(this) }, concat: function (a) { var c = this.words, q = a.words, d = this.sigBytes; a = a.sigBytes; this.clamp(); if (d % 4) for (var b = 0; b < a; b++) c[d + b >>> 2] |= (q[b >>> 2] >>> 24 - 8 * (b % 4) & 255) << 24 - 8 * ((d + b) % 4); else if (65535 < q.length) for (b = 0; b < a; b += 4) c[d + b >>> 2] = q[b >>> 2]; else c.push.apply(c, q); this.sigBytes += a; return this }, clamp: function () { var a = this.words, c = this.sigBytes; a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4); a.length = e.ceil(c / 4) }, clone: function () { var a = f.clone.call(this); a.words = this.words.slice(0); return a }, random: function (a) { for (var c = [], b = 0; b < a; b += 4) c.push(4294967296 * e.random() | 0); return new n.init(c, a) } }), b = p.enc = {}, h = b.Hex = { stringify: function (a) { var c = a.words; a = a.sigBytes; for (var b = [], d = 0; d < a; d++) { var f = c[d >>> 2] >>> 24 - 8 * (d % 4) & 255; b.push((f >>> 4).toString(16)); b.push((f & 15).toString(16)) } return b.join("") }, parse: function (a) { for (var c = a.length, b = [], d = 0; d < c; d += 2) b[d >>> 3] |= parseInt(a.substr(d, 2), 16) << 24 - 4 * (d % 8); return new n.init(b, c / 2) } }, g = b.Latin1 = { stringify: function (a) { var c = a.words; a = a.sigBytes; for (var b = [], d = 0; d < a; d++) b.push(String.fromCharCode(c[d >>> 2] >>> 24 - 8 * (d % 4) & 255)); return b.join("") }, parse: function (a) { for (var c = a.length, b = [], d = 0; d < c; d++) b[d >>> 2] |= (a.charCodeAt(d) & 255) << 24 - 8 * (d % 4); return new n.init(b, c) } }, r = b.Utf8 = { stringify: function (a) { try { return decodeURIComponent(escape(g.stringify(a))) } catch (c) { throw Error("Malformed UTF-8 data"); } }, parse: function (a) { return g.parse(unescape(encodeURIComponent(a))) } }, k = j.BufferedBlockAlgorithm = f.extend({ reset: function () { this._data = new n.init; this._nDataBytes = 0 }, _append: function (a) { "string" == typeof a && (a = r.parse(a)); this._data.concat(a); this._nDataBytes += a.sigBytes }, _process: function (a) { var c = this._data, b = c.words, d = c.sigBytes, f = this.blockSize, h = d / (4 * f), h = a ? e.ceil(h) : e.max((h | 0) - this._minBufferSize, 0); a = h * f; d = e.min(4 * a, d); if (a) { for (var g = 0; g < a; g += f) this._doProcessBlock(b, g); g = b.splice(0, a); c.sigBytes -= d } return new n.init(g, d) }, clone: function () { var a = f.clone.call(this); a._data = this._data.clone(); return a }, _minBufferSize: 0 }); j.Hasher = k.extend({ cfg: f.extend(), init: function (a) { this.cfg = this.cfg.extend(a); this.reset() }, reset: function () { k.reset.call(this); this._doReset() }, update: function (a) { this._append(a); this._process(); return this }, finalize: function (a) { a && this._append(a); return this._doFinalize() }, blockSize: 16, _createHelper: function (a) { return function (c, b) { return (new a.init(b)).finalize(c) } }, _createHmacHelper: function (a) { return function (b, f) { return (new s.HMAC.init(a, f)).finalize(b) } } }); var s = p.algo = {}; return p }(Math);    (function () { var e = CryptoJS, m = e.lib, p = m.WordArray, j = m.Hasher, l = [], m = e.algo.SHA1 = j.extend({ _doReset: function () { this._hash = new p.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (f, n) { for (var b = this._hash.words, h = b[0], g = b[1], e = b[2], k = b[3], j = b[4], a = 0; 80 > a; a++) { if (16 > a) l[a] = f[n + a] | 0; else { var c = l[a - 3] ^ l[a - 8] ^ l[a - 14] ^ l[a - 16]; l[a] = c << 1 | c >>> 31 } c = (h << 5 | h >>> 27) + j + l[a]; c = 20 > a ? c + ((g & e | ~g & k) + 1518500249) : 40 > a ? c + ((g ^ e ^ k) + 1859775393) : 60 > a ? c + ((g & e | g & k | e & k) - 1894007588) : c + ((g ^ e ^ k) - 899497514); j = k; k = e; e = g << 30 | g >>> 2; g = h; h = c } b[0] = b[0] + h | 0; b[1] = b[1] + g | 0; b[2] = b[2] + e | 0; b[3] = b[3] + k | 0; b[4] = b[4] + j | 0 }, _doFinalize: function () { var f = this._data, e = f.words, b = 8 * this._nDataBytes, h = 8 * f.sigBytes; e[h >>> 5] |= 128 << 24 - h % 32; e[(h + 64 >>> 9 << 4) + 14] = Math.floor(b / 4294967296); e[(h + 64 >>> 9 << 4) + 15] = b; f.sigBytes = 4 * e.length; this._process(); return this._hash }, clone: function () { var e = j.clone.call(this); e._hash = this._hash.clone(); return e } }); e.SHA1 = j._createHelper(m); e.HmacSHA1 = j._createHmacHelper(m) })();    return CryptoJS.SHA1(words).toString();  }  // time33 哈希  , time33: function (words) { //# time33 哈希算法    words = words || '';    //哈希time33算法    for (var i = 0, len = words.length, hash = 5381; i < len; ++i) {      hash += (hash << 5) + words.charAt(i).charCodeAt();    };    return hash & 0x7fffffff;  }}

日期方法集

Angela.date = { //# 日期時間  //@s : 開始時間  //@e : 結束時間  //@n : 當前時間 , n 的格式為 毫秒數  isInArea: function (s, e, n) { //# 判斷時間區域    var start = this.parse(s),      end = this.parse(e),      now = parseFloat(n) || new Date()    ;    start = Math.min(start, end);    end = Math.max(start, end);    return now >= start && now <= end ? true : false;  }  //把 字符竄轉化為 毫秒  //@date : 2013-03-02 1:2:2  , parse: function (date) { //# 格式化時間    return Date.parse(date); //.replace(/-/g, '/')  }  //@time , 時間 , 如 new Date('2013/11/10 0:12:12')  //@pre , 星期的 前綴,如:周 ,星期  //@ nums ,如:一二三四五六日  , getWeek: function (time, pre, nums) { //# 獲取星期幾    time = typeof time == 'string' ? this.parse(time) : (time || new Date());    pre = pre || '星期'; //周    nums = '日一二三四五六';    return pre + nums[time.getDay()];  }  //@formatType : YYYY, YY, MM  //@ time : new Date('2013/11/12')  //@weeks : 日一二三四五六  , format: function (formatType, time, weeks) { //格式化輸出時間    var pre = '0'    ;    formatType = formatType || 'YYYY-MM-DD'    weeks = weeks || '日一二三四五六';    time = time || new Date();    //格式化時間    return (formatType || '')      .replace(/yyyy|YYYY/g, time.getFullYear())      .replace(/yy|YY/g, Tydic.string.addPre(pre, time.getFullYear() % 100), 2)      .replace(/mm|MM/g, Tydic.string.addPre(pre, time.getMonth() + 1, 2))      .replace(/m|M/g, time.getMonth() + 1)      .replace(/dd|DD/g, Tydic.string.addPre(pre, time.getDate(), 2))      .replace(/d|D/g, time.getDate())      .replace(/hh|HH/g, Tydic.string.addPre(pre, time.getHours(), 2))      .replace(/h|H/g, time.getHours())      .replace(/ii|II/g, Tydic.string.addPre(pre, time.getMinutes(), 2))      .replace(/i|I/g, time.getMinutes())      .replace(/ss|SS/g, Tydic.string.addPre(pre, time.getSeconds(), 2))      .replace(/s|S/g, time.getSeconds())      .replace(/w/g, time.getDay())      .replace(/W/g, weeks[time.getDay()])    ;  }  //倒計時  , countDown: function (opt) { //# 倒計時    var option = {      nowTime: 0  //    當前時間, ,2013/02/01 18:30:30        , endTime: 0      //截止時間 ,2013/02/01 18:30:30        , interval: 1      //間隔回調時間,秒        , called: function (day, hour, second, minute) { }//每次回調        , finaled: function () { } //完成后回調    }      , opts = {}      , timer = null    ;    opts = Tydic.extend(option, opt);    //當前時間    if (!opts.nowTime) {      opts.nowTime = (new Date()).getTime();    } else {      opts.nowTime = this.parse(opts.nowTime);    }    //當前時間    if (!opts.endTime) {      opts.endTime = (new Date()).getTime();    } else {      opts.endTime = this.parse(opts.endTime);    }    timer = setInterval(loop, opts.interval * 1e3);    // 循環    function loop() {      var ts = opts.endTime - opts.nowTime //計算剩余的毫秒數        , dd = parseInt(ts / 8.64e7)  //計算剩余的天數        , hh = parseInt(ts / 3.6e7 % 24)//計算剩余的小時數        , mm = parseInt(ts / 6e4 % 60)//計算剩余的分鐘數        , ss = parseInt(ts / 1e3 % 60)//計算剩余的秒數      ;      //當前時間遞減      opts.nowTime += opts.interval * 1e3;      if (ts <= 0) {        clearInterval(timer);        opts.finaled();      } else {        opts.called(dd, hh, mm, ss);      }    }  }};

瀏覽器檢測方法集

Angela.browser = { //#瀏覽器  browsers: { //# 瀏覽器內核類別    weixin: /micromessenger(//[/d/.]+)*/  //微信內置瀏覽器    , mqq: /mqqbrowser(//[/d/.]+)*/    //手機QQ瀏覽器    , uc: /ucbrowser(//[/d/.]+)*/      //UC瀏覽器    , chrome: /(?:chrome|crios)(//[/d/.]+)*/ //chrome瀏覽器    , firefox: /firefox(//[/d/.]+)*/     //火狐瀏覽器    , opera: /opera(//|/s)([/d/.]+)*/   //歐朋瀏覽器    , sougou: /sogoumobilebrowser(//[/d/.]+)*/  //搜狗手機瀏覽器    , baidu: /baidubrowser(//[/d/.]+)*/     //百度手機瀏覽器    , 360: /360browser([/d/.]*)/             //360瀏覽器    , safari: /safari(//[/d/.]+)*/    //蘋果瀏覽器    , ie: /msie/s([/d/.]+)*/  // ie 瀏覽器  }  //@errCall : 錯誤回調  , addFav: function (url, title, errCall) { //#加入收藏夾    try {      window.external.addFavorite(url, title);    } catch (e) {      try {        window.sidebar.addPanel(title, url, '');      } catch (e) {        errCall();      }    }  },  //瀏覽器版本  coreInit: function () { //#noadd    var i = null      , browsers = this.browsers      , ua = window.navigator.userAgent.toLowerCase()      , brower = ''      , pos = 1    ;    for (i in browsers) {      if (brower = ua.match(browsers[i])) {        if (i == 'opera') {          pos = 2;        } else {          pos = 1;        }        this.version = (brower[pos] || '').replace(/[///s]+/, '');        this.core = i;        return i;      }    }  }  // 檢測IE版本 !僅支持IE: 5,6,7,8,9 版本  , ie: (function () { //# 檢測IE版本 !僅支: ie5,6,7,8,9    var v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i');    while (      div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',        all[0]      );    return v > 4 ? v : false;  })()  , isWebkit: /webkit/i.test(navigator.userAgent)  };

json方法

Angela.json = { //# json 對象  // 字符串 變為 json 對象  parse: function (data) { //# 格式化字符串,變為 json 對象    var // JSON RegExp      rvalidchars = /^[/],:{}/s]*$/      , rvalidbraces = /(?:^|:|,)(?:/s*/[)+/g      , rvalidescape = ///(?:["http:////bfnrt]|u[/da-fA-F]{4})/g      , rvalidtokens = /"[^"http:///r/n]*"|true|false|null|-?(?:/d+/.|)/d+(?:[eE][+-]?/d+|)/g    ;    if (window.JSON && window.JSON.parse) {      return window.JSON.parse(data);    }    if (data === null) {      return data;    }    if (typeof data === "string") {      data = data.replace(/^/s+|/s+$/g, '');      if (data && rvalidchars.test(data.replace(rvalidescape, "@")        .replace(rvalidtokens, "]")        .replace(rvalidbraces, ""))) {        return (new Function("return " + data))();      }    }    return '';  }};

extend方法

Angela.extend = function () { //# 對象擴展  var target = arguments[0] || {}    , i = 1    , length = arguments.length    , options  ;  if (typeof target != "object" && typeof target != "function")    target = {};  for (; i < length; i++) {    if ((options = arguments[i]) != null) {      for (var name in options) {        var copy = options[name];        if (target === copy) {          continue;        }        if (copy !== undefined) {          target[name] = copy;        }      }    }  }  return target;};

類型判斷的方法

/**判斷變量val是不是整數類型*/function isNumber(val) {  return typeof val === 'number' && isFinite(val);}/**判斷變量val是不是布爾類型*/function isBoolean(val) {  return typeof val === 'boolean';}/**判斷變量val是不是字符串類型*/function isString (val) {  return typeof val === 'string';}/**判斷變量val是不是undefined*/function isUndefined(val) {  return typeof val === 'undefined';}/**判斷變量val是不是對象*/function isObj(str) {  if (str===null||typeof str==='undefined') {    return false;  }  return typeof str === 'object';}/**判斷變量val是不是null*/function isNull(val) {  return val === null;}/**判斷變量arr是不是數組*方法一*/function isArray1(arr) {  return Object.prototype.toString.apply(arr) === '[object Array]';}/**判斷變量arr是不是數組*方法二*/function isArray2(arr) {  if (arr === null || typeof arr === 'undefined') {    return false;  }  return arr.constructor === Array;}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美整片在线观看| 久久香蕉精品香蕉| 91中文字幕在线观看| 亚洲天堂精品在线| 一区二区三区黄色| 国产美女91呻吟求| 精品一区二区三区三区| 国产精品自在线| 日韩电影在线观看中文字幕| 不卡伊人av在线播放| 精品视频中文字幕| 亚洲视频欧洲视频| 91精品视频在线看| 一区二区三区久久精品| 欧美一二三视频| 91av在线播放| 欧美人交a欧美精品| 大桥未久av一区二区三区| 精品中文字幕久久久久久| 亚洲国产成人精品女人久久久| 亚洲精选在线观看| 国产精品欧美激情| 日韩av男人的天堂| 午夜精品一区二区三区视频免费看| 欧美精品免费在线| 欧美日韩国产一区中文午夜| 欧美区在线播放| 亚洲精品在线观看www| 国产精品久久久久久超碰| 日韩黄在线观看| 日韩在线视频一区| 97婷婷大伊香蕉精品视频| 国外成人在线直播| 欧美成人精品h版在线观看| 97在线看福利| 久久人人爽人人爽人人片亚洲| 亚洲第一区在线观看| 亚洲偷欧美偷国内偷| 中文字幕欧美日韩在线| 2021久久精品国产99国产精品| 日韩成人免费视频| 亚洲视频999| 国产精品久久久久久久久久久久久久| 中文字幕一区二区三区电影| 黑人巨大精品欧美一区二区三区| 国产小视频国产精品| 狠狠爱在线视频一区| 日韩在线免费视频观看| 日韩影视在线观看| 久久精品国产96久久久香蕉| 亚洲老头老太hd| 国产69精品99久久久久久宅男| 91视频国产精品| 亚洲电影免费在线观看| 成人免费视频xnxx.com| 国产一区二区丝袜| 成人国产精品日本在线| 亚洲精品狠狠操| 国产精品日韩在线播放| 久久999免费视频| 欧美性xxxxx| 国产日韩欧美一二三区| 久久久久久久国产精品视频| 国产精品xxxxx| 久久久之久亚州精品露出| 欧美亚洲国产视频| 91天堂在线视频| 国产精品久久久久久中文字| 热久久免费视频精品| 精品久久中文字幕久久av| 97色在线视频| 亚洲欧美日韩综合| 欧美亚洲国产视频小说| 欧美亚洲国产日本| 91精品国产自产在线观看永久| 日韩av日韩在线观看| 亚洲第一区第二区| 国产精品视频大全| 亚洲xxxx18| 91精品综合视频| 欧美激情在线播放| 国产精品久在线观看| 欧洲成人免费视频| 亚洲午夜性刺激影院| 久久在线免费视频| 日韩精品电影网| 九色91av视频| 日本电影亚洲天堂| 精品国产依人香蕉在线精品| 这里只有精品久久| 亚洲小视频在线观看| 色婷婷成人综合| 亚洲乱码一区二区| 久久精品中文字幕| 精品中文字幕乱| 91情侣偷在线精品国产| 亚洲电影免费观看高清完整版在线观看| 国产精品美女免费视频| 在线观看久久久久久| 日韩亚洲精品电影| 色妞在线综合亚洲欧美| 亚洲国产精品久久久久秋霞不卡| 久久精品99国产精品酒店日本| 日韩有码在线电影| 欧美成人在线免费| 亚洲视频综合网| 国产精品免费观看在线| 欧美色视频日本高清在线观看| 欧美高清在线播放| 中文字幕av一区二区三区谷原希美| 亚洲色图狂野欧美| 国产视频在线一区二区| 成人黄色激情网| 亚洲视频精品在线| 亚洲精品av在线| 亚洲国产精品免费| 欧美午夜激情小视频| 亚洲视频在线播放| 国产精品电影一区| 亚洲国产私拍精品国模在线观看| 高清日韩电视剧大全免费播放在线观看| 在线精品91av| 国产主播在线一区| 亚洲成人精品视频| 亚洲免费电影一区| 日本在线精品视频| 美女久久久久久久| 日韩经典中文字幕在线观看| 欧美成人高清视频| 亚洲剧情一区二区| 5278欧美一区二区三区| 欧美成人性生活| 成人亚洲欧美一区二区三区| 亚洲人成电影网站色…| 亚洲在线观看视频网站| 国产亚洲视频在线| 国产综合久久久久| 国产免费一区二区三区在线观看| 亚洲福利在线视频| wwwwwwww亚洲| 国产精品久久中文| 欧美裸身视频免费观看| 一本色道久久综合狠狠躁篇的优点| 亚洲欧美激情视频| 亚洲黄色在线看| 色婷婷av一区二区三区在线观看| 亚洲精品乱码久久久久久金桔影视| 国产在线视频一区| 成人欧美在线视频| 亚洲999一在线观看www| 欧美麻豆久久久久久中文| 91久久久久久久久久久| 国产成人精品a视频一区www| 亚洲美女中文字幕| 久久亚洲国产精品成人av秋霞| 欧美精品久久久久| 久久久视频精品| 色偷偷888欧美精品久久久| 欧美国产日韩一区二区在线观看| 国外视频精品毛片| 国内精品模特av私拍在线观看| 精品少妇一区二区30p| 91久久久国产精品| yw.139尤物在线精品视频|