【JQuery】JQuery簡單類庫

JS簡單類庫

var JS_Control = JS_Control || {
      domain : "http://HOST"
};
JS_Control.include = {
      css : function(file, func) {
             var h = document.getElementsByTagName( 'head')[0];
             var link = document.createElement( 'link');
            link.rel = 'stylesheet';
            link.type = 'text/css';
            link.href = file;
            h.appendChild(link);
             if (!jQuery.browser.msie) {
                   // 非ie 瀏覽器css加在完成後document.styleSheets.length數量會增加1
                   var css_count = document.styleSheets.length;
                   var ld = setInterval( function() {
                         if (document.styleSheets.length > css_count) {
                               typeof (func) == 'function' && func();
                              clearInterval(ld);
                        }
                  })
            } else {
                  link.onreadystatechange = function() {
                         if ( 'loaded' == link.readyState
                                    || 'complete' == link.readyState) {
                               typeof (func) == 'function' && func();
                        }
                  }
            }
      },
      js : function(file, func) {
             var h = document.getElementsByTagName( 'head')[0];
             var link = document.createElement( 'script');
            link.language = 'javascript';
            link.type = 'text/javascript';
             if (document.all) {
                  link.onreadystatechange = function() {
                         if ( 'complete' == link.readyState
                                    || 'loaded' == link.readyState) {
                               typeof (func) == 'function' && func();
                        }
                  }
            } else {
                  link.onload = function() {
                         typeof (func) == 'function' && func();
                  }
            }
            link.src = file;
            h.appendChild(link);
      }
};
JS_Control.load_jquery = {
      jquery_file : JS_Control.js_domain + 'js/jquery-1.6.4.min.js',
      load : function(func, file) {
             var notHave = false;
             if ( 'undefined' == typeof jQuery) {
                  notHave = true;
            } else if (jQuery.fn.jquery.substr(0, 1) < 1
                        || jQuery.fn.jquery.substr(2, 1) < 4) {
                  notHave = true;
            }
             if (!file) {
                  file = this.jquery_file;
            }
             if (notHave) {
                  JS_Control.include.js(file, func);
            } else {
                   typeof (func) == 'function' && func();
            }
      }
};
JS_Control.timer = {
      timerHandle : null,
      run : function(func, time) {
             if ( 'undefined' == time) {
                  time = 1000;
            }
             this.timerHandle = setInterval( function() {
                   typeof (func) == 'function' && func();
            }, time);
      }
};
JS_Control.js = {
      compare : function(fobj, sobj) {
             if (fobj == sobj) {
                   return true;
            }
             var flength = 0;
             var slength = 0;
             for ( var ele in fobj) {
                  flength++;
            }
             for ( var ele in sobj) {
                  slength++;
            }
             if (flength != slength) {
                   return false;
            }
             if (fobj.constructor == sobj.constructor) {
                   for ( var ele in fobj) {
                         if ( 'object' == typeof fobj[ele]) {
                               if (! this.compare(fobj[ele], sobj[ele])) {
                                     return false;
                              }
                        } else if ( 'function' == typeof fobj[ele]) {
                               if (fobj[ele].toString() != sobj[ele].toString()) {
                                     return false;
                              }
                        } else if (fobj[ele] != sobj[ele]) {
                               return false;
                        }
                  }
                   return true;
            } else {
                   return false;
            }
      },// 比較兩個js對象是否相等
      randArray : function(array) {
             return array[Math.floor(Math.random() * array.length)];
      }// 隨機獲取數組值
};

/**
 * Cookie
 */
JS_Control.cookie = {
      get : function(name, type) {
             var cookies = document.cookie.split( '; ');
             var gets = [];
             var temp;
             if ( '' == type || 'undefined' == typeof type) {
                   for ( var i = 0; i < cookies.length; i++) {
                        temp = cookies[i].split( '=');
                        gets[temp[0]] = unescape(temp[1]);
                  }
                   if (name) {
                         return gets[name];
                  } else {
                         return '';
                  }
            } else {
                   var tempcookie = '';
                   for (i = 0; i < cookies.length; i++) {
                         if (cookies[i].indexOf(type + '=') > -1) {
                              tempcookie = cookies[i].replace(type + '=', '').split( '&');
                               for ( var x = 0; x < tempcookie.length; x++) {
                                    temp = tempcookie[x].split( '=');
                                    gets[temp[0]] = unescape(temp[1]);
                              }
                        }
                  }
                   if (name) {
                         return gets[name];
                  } else {
                         return '';
                  }
            }
      },
      set : function(name, value, expires, path, domain, secure) {
             if (!name || !value) {
                   return false;
            }
             if ( '' == name || '' == value) {
                   return false;
            }
             var today = new Date();
             if (expires) {
                   if ( /^[0-9]+$/.test(expires)) {
                        expires = new Date(today.getTime() + expires * 1000)
                                    .toGMTString();
                  } else if (! /^wed, d{2} w{3} d{4} d{2}:d{2}:d{2} GMT$/
                              .test(expires)) {
                        expires = undefined;
                  }
            } else {
                  expires = new Date(today.getTime() + 3600000 * 24 * 365)
                              .toGMTString();
            }
             var cookies = name + '=' + escape(value) + ';'
                        + ((expires) ? ' expires=' + expires + ';' : '')
                        + ((path) ? 'path=' + path + ';' : '')
                        + ((domain) ? 'domain=' + domain + ';' : '')
                        + ((secure && secure != 0) ? 'secure' : '');
             if (cookies.length < 4096) {
                  document.cookie = cookies;
                   return true;
            } else {
                   return false;
            }
      },
      del : function(name, path, domain) {
             if (!name || ! this.Get(name)) {
                   return false;
            }
            document.cookie = name + '=;' + ((path) ? 'path=' + path + ';' : '')
                        + ((domain) ? 'domain=' + domain + ';' : '')
                        + 'expires=Thu, 01-Jan-1970 00:00:01 GMT;';
             return true;
      }
};

/**
 * String
 */
JS_Control.string = {
      trim : function(str) {
             return str.replace( /(^\s*)|(\s*$)/g, "");
      },
      enUnicode : function(str) {
             return escape(str).toLocaleLowerCase().replace( /%u/gi, '\\u');
      },
      deUnicode : function(str) {
             return unescape(str.replace( /\\u/gi, '%u'));
      },
      /**
       * 補全字符串
       *
       * @param <string>
       *            str 需要補全的字符
       * @param <int>
       *            len 補全至多少位
       * @param <string>
       *            type 在前補全/後補全
       * @param <string>
       *            pChar 自定義補全的字符
       */
      parseStandard : function(str, len, type, pChar) {
             var c = len - str.length;
             var isAfter = false;
             var char = '0';
             if (pChar) {
                  char = pChar;
            }
             if (type && 'after' == type) {
                  isAfter = true;
            }
             if (c * 1 > 0) {
                   for ( var i = 0; i < c; i++) {
                         if (isAfter) {
                              str = str + char;
                        } else {
                              str = char + str;
                        }
                  }
            }
             return str;
      }
};

/**
 * Date
 */
JS_Control.date = {
      format : function(t, fmt) {
             if (!t) {
                  t = new Date();
            }
             if (!fmt) {
                  fmt = 'yyyy-MM-dd hh:mm:ss'
            }
             var o = {
                   'M+' : t.getMonth() + 1, // 月份
                   'd+' : t.getDate(), // 日
                   'h+' : t.getHours(), // 小時
                   'm+' : t.getMinutes(), // 分
                   's+' : t.getSeconds(), // 秒
                   'q+' : Math.floor((t.getMonth() + 3) / 3), // 季度
                   'S' : t.getMilliseconds()
             // 毫秒
            }
             if ( /(y+)/.test(fmt)) {
                  fmt = fmt.replace(RegExp.$1, (t.getFullYear() + "")
                              .substr(4 - RegExp.$1.length));
            }
             for ( var k in o) {
                   if ( new RegExp( '(' + k + ')').test(fmt)) {
                        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k])
                                    : (( "00" + o[k]).substr(( "" + o[k]).length)));
                  }
            }
             return fmt;
      },
      /**
       * 日期轉時間戳
       *
       * @param <string>
       *            <object> obj 時間對象或者時間格式字符串
       */
      toUnix : function(obj) {
             var type = typeof (obj);
             var time = 0;
             var date;
             if ( 'object' == type) {
                   date = obj;
            } else if ( 'string' == type) {
                  obj = obj.replace( /-/g, '/');
                   date = new Date(obj);
            } else {
                   date = new Date();
            }
            time = date.getTime();
             var time_str = new String(time);
             if (time_str == 10) {
                  time = time * 1000;
            }
             return parseInt(time);

      },
      /**
       * 時間戳轉換日期
       *
       * @param <int>
       *            unixTime 待時間戳(秒)
       * @param <string>
       *            fmt 返回時間格式
       */
      unixToDate : function(unixTime, fmt) {
             if (parseInt(unixTime).toString().length == 10) {
                  unixTime = unixTime * 1000
            }
             var time = new Date(unixTime);
             return this.format(time, fmt);
      }
}

/**
 * JSON
 */
JS_Control.json = {
      toString : function(object) {
             var arr = [];
             var fmt = function(obj) {
                   if ( 'object' == typeof obj && obj != null) {
                         return this.toString(obj);
                  }
                   return /^(string|number)$/.test( typeof obj) ? '\'' + obj + '\''
                              : obj;
            }
             for ( var i in object) {
                  arr.push( '\'' + i + '\':' + fmt(object[i]));
            }
             return '{' + arr.join( ',') + '}';
      }
},

/**
 * LOG
 */
JS_Control.log = {
      info : function(info, func) {

      },
      error : function(error, func) {

      }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章