core.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. /**
  2. * @author 赵先烈([email protected]
  3. * @class 类库
  4. */
  5. var baidu = function(){
  6. this.version = "1.3.5";
  7. };
  8. /**
  9. * 增加命名空间机制
  10. */
  11. baidu.namespace = new Object();
  12. /**
  13. * 注册命名空间
  14. * @param {String} fullNS 完整的命名空间字符串,如baidu.libs.Firefox
  15. * @example baidu.namespace.register("baidu.libs.Firefox");
  16. */
  17. baidu.namespace.register = function(fullNS){
  18. //命名空间合法性校验依据
  19. var reg = /^[_$a-z]+[_$a-z0-9]*/i;
  20. // 将命名空间切成N部分, 比如baidu.libs.Firefox等
  21. var nsArray = fullNS.split('.');
  22. var sEval = "";
  23. var sNS = "";
  24. for (var i = 0; i < nsArray.length; i++){
  25. //命名空间合法性校验
  26. if(!reg.test(nsArray[i])) {
  27. throw new Error("Invalid namespace:" + nsArray[i] + "");
  28. return ;
  29. }
  30. if (i != 0) sNS += ".";
  31. sNS += nsArray[i];
  32. // 依次创建构造命名空间对象(假如不存在的话)的语句
  33. sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();";
  34. }
  35. //生成命名空间
  36. if (sEval != "") eval(sEval);
  37. };
  38. /**
  39. * 让所有字符串支持空白过滤功能:trim
  40. * @retrn {String} 返回两端无空白的字符串
  41. */
  42. String.prototype.trim = function(){
  43. return this.replace(/^\s*|\s*$/g,"");
  44. };
  45. /**
  46. * 字符串的format方法
  47. */
  48. String.prototype.format = function(){
  49. var $ = arguments.length, _ = this;
  50. while ($--)
  51. _ = _.replace(new RegExp("\\{" + $ + "\\}", "g"), arguments[$]);
  52. return _
  53. };
  54. /**
  55. * 日期格式化
  56. * @param {Object} pattern
  57. */
  58. Date.prototype.format = function(pattern){
  59. var pad = function (source, length) {
  60. var pre = "",
  61. negative = (source < 0),
  62. string = String(Math.abs(source));
  63. if (string.length < length) {
  64. pre = (new Array(length - string.length + 1)).join('0');
  65. }
  66. return (negative ? "-" : "") + pre + string;
  67. };
  68. if ('string' != typeof pattern) {
  69. return this.toString();
  70. }
  71. var replacer = function(patternPart, result) {
  72. pattern = pattern.replace(patternPart, result);
  73. }
  74. var year = this.getFullYear(),
  75. month = this.getMonth() + 1,
  76. date2 = this.getDate(),
  77. hours = this.getHours(),
  78. minutes = this.getMinutes(),
  79. seconds = this.getSeconds();
  80. replacer(/yyyy/g, pad(year, 4));
  81. replacer(/yy/g, pad(parseInt(year.toString().slice(2), 10), 2));
  82. replacer(/MM/g, pad(month, 2));
  83. replacer(/M/g, month);
  84. replacer(/dd/g, pad(date2, 2));
  85. replacer(/d/g, date2);
  86. replacer(/HH/g, pad(hours, 2));
  87. replacer(/H/g, hours);
  88. replacer(/hh/g, pad(hours % 12, 2));
  89. replacer(/h/g, hours % 12);
  90. replacer(/mm/g, pad(minutes, 2));
  91. replacer(/m/g, minutes);
  92. replacer(/ss/g, pad(seconds, 2));
  93. replacer(/s/g, seconds);
  94. return pattern;
  95. };
  96. /**
  97. * 获取某字符串的字节数
  98. */
  99. String.prototype.getBytes = function () {
  100. var stream = this.replace(/\n/g, 'xx').replace(/\t/g, 'x');
  101. var escapedStr = encodeURIComponent(stream);
  102. return escapedStr.replace(/%[A-Z0-9][A-Z0-9]/g, 'x').length;
  103. }
  104. /**
  105. * 获取某个节点的outerhtml,超过40个字符,则以...代替
  106. * @param {} elm
  107. */
  108. var getOuterHtmlEllipsis = function(elm) {
  109. var reg = /(<[^>]+>)/g;
  110. var arr = reg.exec(elm.outerHTML);
  111. var rst = arr ? arr[1] : elm.outerHTML;
  112. rst = rst.length > 40 ? rst.substr(0,40) + '...' : rst;
  113. return rst.replace(/</g,'&lt;').replace(/>/g,'&gt;');
  114. };
  115. /**
  116. * 获取某节点的整个html片段,超过40个字符,则以...代替
  117. * @param {Object} elm
  118. */
  119. var getOuterAndInnerHtmlEllipsis = function(elm){
  120. var rst = jQuery('<div></div>').append(elm).html();
  121. };
  122. (function(){
  123. baidu.i18n = {};
  124. baidu.i18n.getMessage = function(msgId,arr){
  125. if(arr) {
  126. for(var i=0,len=arr.length;i<len;i++){
  127. arr[i] = '' + arr[i];
  128. }
  129. return chrome.i18n.getMessage(msgId,arr);
  130. }else{
  131. return chrome.i18n.getMessage(msgId);
  132. }
  133. };
  134. })();