123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- /**
- * @author 赵先烈([email protected])
- * @class 类库
- */
- var baidu = function(){
- this.version = "1.3.5";
- };
- /**
- * 增加命名空间机制
- */
- baidu.namespace = new Object();
- /**
- * 注册命名空间
- * @param {String} fullNS 完整的命名空间字符串,如baidu.libs.Firefox
- * @example baidu.namespace.register("baidu.libs.Firefox");
- */
- baidu.namespace.register = function(fullNS){
- //命名空间合法性校验依据
- var reg = /^[_$a-z]+[_$a-z0-9]*/i;
-
- // 将命名空间切成N部分, 比如baidu.libs.Firefox等
- var nsArray = fullNS.split('.');
- var sEval = "";
- var sNS = "";
- for (var i = 0; i < nsArray.length; i++){
- //命名空间合法性校验
- if(!reg.test(nsArray[i])) {
- throw new Error("Invalid namespace:" + nsArray[i] + "");
- return ;
- }
- if (i != 0) sNS += ".";
- sNS += nsArray[i];
- // 依次创建构造命名空间对象(假如不存在的话)的语句
- sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();";
- }
- //生成命名空间
- if (sEval != "") eval(sEval);
- };
- /**
- * 让所有字符串支持空白过滤功能:trim
- * @retrn {String} 返回两端无空白的字符串
- */
- String.prototype.trim = function(){
- return this.replace(/^\s*|\s*$/g,"");
- };
- /**
- * 字符串的format方法
- */
- String.prototype.format = function(){
- var $ = arguments.length, _ = this;
- while ($--)
- _ = _.replace(new RegExp("\\{" + $ + "\\}", "g"), arguments[$]);
- return _
- };
- /**
- * 日期格式化
- * @param {Object} pattern
- */
- Date.prototype.format = function(pattern){
- var pad = function (source, length) {
- var pre = "",
- negative = (source < 0),
- string = String(Math.abs(source));
-
- if (string.length < length) {
- pre = (new Array(length - string.length + 1)).join('0');
- }
-
- return (negative ? "-" : "") + pre + string;
- };
-
- if ('string' != typeof pattern) {
- return this.toString();
- }
- var replacer = function(patternPart, result) {
- pattern = pattern.replace(patternPart, result);
- }
-
- var year = this.getFullYear(),
- month = this.getMonth() + 1,
- date2 = this.getDate(),
- hours = this.getHours(),
- minutes = this.getMinutes(),
- seconds = this.getSeconds();
- replacer(/yyyy/g, pad(year, 4));
- replacer(/yy/g, pad(parseInt(year.toString().slice(2), 10), 2));
- replacer(/MM/g, pad(month, 2));
- replacer(/M/g, month);
- replacer(/dd/g, pad(date2, 2));
- replacer(/d/g, date2);
- replacer(/HH/g, pad(hours, 2));
- replacer(/H/g, hours);
- replacer(/hh/g, pad(hours % 12, 2));
- replacer(/h/g, hours % 12);
- replacer(/mm/g, pad(minutes, 2));
- replacer(/m/g, minutes);
- replacer(/ss/g, pad(seconds, 2));
- replacer(/s/g, seconds);
- return pattern;
- };
- /**
- * 获取某字符串的字节数
- */
- String.prototype.getBytes = function () {
- var stream = this.replace(/\n/g, 'xx').replace(/\t/g, 'x');
- var escapedStr = encodeURIComponent(stream);
- return escapedStr.replace(/%[A-Z0-9][A-Z0-9]/g, 'x').length;
- }
- /**
- * 获取某个节点的outerhtml,超过40个字符,则以...代替
- * @param {} elm
- */
- var getOuterHtmlEllipsis = function(elm) {
- var reg = /(<[^>]+>)/g;
- var arr = reg.exec(elm.outerHTML);
- var rst = arr ? arr[1] : elm.outerHTML;
- rst = rst.length > 40 ? rst.substr(0,40) + '...' : rst;
- return rst.replace(/</g,'<').replace(/>/g,'>');
- };
- /**
- * 获取某节点的整个html片段,超过40个字符,则以...代替
- * @param {Object} elm
- */
- var getOuterAndInnerHtmlEllipsis = function(elm){
- var rst = jQuery('<div></div>').append(elm).html();
- };
- (function(){
- baidu.i18n = {};
- baidu.i18n.getMessage = function(msgId,arr){
- if(arr) {
- for(var i=0,len=arr.length;i<len;i++){
- arr[i] = '' + arr[i];
- }
- return chrome.i18n.getMessage(msgId,arr);
- }else{
- return chrome.i18n.getMessage(msgId);
- }
- };
- })();
|