core.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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. var _tmpObj = [window];
  25. for (var i = 0; i < nsArray.length; i++){
  26. //命名空间合法性校验
  27. if(!reg.test(nsArray[i])) {
  28. throw new Error("Invalid namespace:" + nsArray[i] + "");
  29. return ;
  30. }
  31. _tmpObj[i+1] = _tmpObj[i][nsArray[i]];
  32. if(typeof _tmpObj[i+1] == 'undefined') {
  33. _tmpObj[i+1] = new Object();
  34. }
  35. }
  36. };
  37. /**
  38. * 让所有字符串支持空白过滤功能:trim
  39. * @retrn {String} 返回两端无空白的字符串
  40. */
  41. String.prototype.trim = function(){
  42. return this.replace(/^\s*|\s*$/g,"");
  43. };
  44. /**
  45. * 字符串的format方法
  46. */
  47. String.prototype.format = function(){
  48. var $ = arguments.length, _ = this;
  49. while ($--)
  50. _ = _.replace(new RegExp("\\{" + $ + "\\}", "g"), arguments[$]);
  51. return _
  52. };
  53. /**
  54. * 日期格式化
  55. * @param {Object} pattern
  56. */
  57. Date.prototype.format = function(pattern){
  58. var pad = function (source, length) {
  59. var pre = "",
  60. negative = (source < 0),
  61. string = String(Math.abs(source));
  62. if (string.length < length) {
  63. pre = (new Array(length - string.length + 1)).join('0');
  64. }
  65. return (negative ? "-" : "") + pre + string;
  66. };
  67. if ('string' != typeof pattern) {
  68. return this.toString();
  69. }
  70. var replacer = function(patternPart, result) {
  71. pattern = pattern.replace(patternPart, result);
  72. }
  73. var year = this.getFullYear(),
  74. month = this.getMonth() + 1,
  75. date2 = this.getDate(),
  76. hours = this.getHours(),
  77. minutes = this.getMinutes(),
  78. seconds = this.getSeconds();
  79. replacer(/yyyy/g, pad(year, 4));
  80. replacer(/yy/g, pad(parseInt(year.toString().slice(2), 10), 2));
  81. replacer(/MM/g, pad(month, 2));
  82. replacer(/M/g, month);
  83. replacer(/dd/g, pad(date2, 2));
  84. replacer(/d/g, date2);
  85. replacer(/HH/g, pad(hours, 2));
  86. replacer(/H/g, hours);
  87. replacer(/hh/g, pad(hours % 12, 2));
  88. replacer(/h/g, hours % 12);
  89. replacer(/mm/g, pad(minutes, 2));
  90. replacer(/m/g, minutes);
  91. replacer(/ss/g, pad(seconds, 2));
  92. replacer(/s/g, seconds);
  93. return pattern;
  94. };
  95. /**
  96. * 获取某字符串的字节数
  97. */
  98. String.prototype.getBytes = function () {
  99. var stream = this.replace(/\n/g, 'xx').replace(/\t/g, 'x');
  100. var escapedStr = encodeURIComponent(stream);
  101. return escapedStr.replace(/%[A-Z0-9][A-Z0-9]/g, 'x').length;
  102. }
  103. /**
  104. * 获取某个节点的outerhtml,超过40个字符,则以...代替
  105. * @param {} elm
  106. */
  107. var getOuterHtmlEllipsis = function(elm) {
  108. var reg = /(<[^>]+>)/g;
  109. var arr = reg.exec(elm.outerHTML);
  110. var rst = arr ? arr[1] : elm.outerHTML;
  111. rst = rst.length > 40 ? rst.substr(0,40) + '...' : rst;
  112. return rst.replace(/</g,'&lt;').replace(/>/g,'&gt;');
  113. };
  114. /**
  115. * 获取某节点的整个html片段,超过40个字符,则以...代替
  116. * @param {Object} elm
  117. */
  118. var getOuterAndInnerHtmlEllipsis = function(elm){
  119. var rst = jQuery('<div></div>').append(elm).html();
  120. };
  121. (function(){
  122. baidu.i18n = {};
  123. baidu.i18n.getMessage = function(msgId,arr){
  124. if(arr) {
  125. for(var i=0,len=arr.length;i<len;i++){
  126. arr[i] = '' + arr[i];
  127. }
  128. return chrome.i18n.getMessage(msgId,arr);
  129. }else{
  130. return chrome.i18n.getMessage(msgId);
  131. }
  132. };
  133. })();