common.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. var ns = window.ns_url;
  2. /* 基础对象检测 */
  3. ns || $.error("js-ns_url基础配置没有正确加载!");
  4. /**
  5. * 解析URL
  6. * @param {string} url 被解析的URL
  7. * @return {object} 解析后的数据
  8. */
  9. ns.parse_url = function(url){
  10. var parse = url.match(/^(?:([a-z]+):\/\/)?([\w-]+(?:\.[\w-]+)+)?(?::(\d+))?([\w-\/]+)?(?:\?((?:\w+=[^#&=\/]*)?(?:&\w+=[^#&=\/]*)*))?(?:#([\w-]+))?$/i);
  11. parse || $.error("url格式不正确!");
  12. return {
  13. "scheme" : parse[1],
  14. "host" : parse[2],
  15. "port" : parse[3],
  16. "path" : parse[4],
  17. "query" : parse[5],
  18. "fragment" : parse[6]
  19. };
  20. }
  21. ns.parse_str = function(str){
  22. var value = str.split("&"), vars = {}, param;
  23. for(val in value){
  24. param = value[val].split("=");
  25. vars[param[0]] = param[1];
  26. }
  27. return vars;
  28. }
  29. ns.parse_name = function(name, type){
  30. if(type){
  31. /* 下划线转驼峰 */
  32. name = name.replace(/_([a-z])/g, function($0, $1){
  33. return $1.toUpperCase();
  34. });
  35. /* 首字母大写 */
  36. name = name.replace(/[a-z]/, function($0){
  37. return $0.toUpperCase();
  38. });
  39. } else {
  40. /* 大写字母转小写 */
  41. name = name.replace(/[A-Z]/g, function($0){
  42. return "_" + $0.toLowerCase();
  43. });
  44. /* 去掉首字符的下划线 */
  45. if(0 === name.indexOf("_")){
  46. name = name.substr(1);
  47. }
  48. }
  49. return name;
  50. }
  51. //scheme://host:port/path?query#fragment
  52. ns.url = function(url, vars, suffix){
  53. var info = this.parse_url(url), path = [], param = {}, reg;
  54. /* 验证info */
  55. info.path || $.error("url格式错误!");
  56. url = info.path;
  57. /* 解析URL */
  58. path = url.split("/");
  59. path = [path.pop(), path.pop(), path.pop()].reverse();
  60. path[1] = path[1] || this.route[1];
  61. path[0] = path[0] || this.route[0];
  62. // param[this.route[0]] = path[0];
  63. // param[this.route[1]] = path[1];
  64. // param[this.route[2]] = path[2].toLowerCase();
  65. // url = param[this.route[0]] + '/' + param[this.route[1]] + '/' + param[this.route[2]];
  66. param[this.route[2]] = path[0];
  67. param[this.route[3]] = path[1];
  68. param[this.route[4]] = path[2].toLowerCase();
  69. url = param[this.route[2]] + '/' + param[this.route[3]] + '/' + param[this.route[4]];
  70. /* 解析参数 */
  71. if(typeof vars === "string"){
  72. vars = this.parse_str(vars);
  73. } else if(!$.isPlainObject(vars)){
  74. vars = {};
  75. }
  76. /* 添加伪静态后缀 */
  77. if(false !== suffix){
  78. suffix = suffix || 'html';
  79. if(suffix){
  80. url += "." + suffix;
  81. }
  82. }
  83. /* 解析URL自带的参数 */
  84. info.query && $.extend(vars, this.parse_str(info.query));
  85. /* 判断站点id是否存在 */
  86. var site = '';
  87. if(vars.site_id){
  88. var site_id = vars.site_id;
  89. delete vars.site_id;
  90. site = 's'+parseInt(site_id) + '/';
  91. }else{
  92. var site_id = this.route[0];
  93. site = site_id > 0 ? 's' + parseInt(site_id) + '/' : '';
  94. }
  95. var addon = '';
  96. if(info.scheme != '' && info.scheme != undefined){
  97. addon = info.scheme + '/';
  98. }
  99. url = site + addon + url;
  100. if(vars){
  101. var param_str = $.param(vars);
  102. if('' !== param_str) {
  103. url += ((this.baseUrl + url).indexOf('?') !== -1 ? '&' : '?') + param_str;
  104. }
  105. }
  106. url = this.baseUrl + url;
  107. return url;
  108. }
  109. /**
  110. * 处理图片路径
  111. */
  112. ns.img = function(path, type = '') {
  113. if(path.indexOf("http://") == -1 && path.indexOf("https://") == -1) {
  114. var start = path.lastIndexOf('.');
  115. type = type ? '_' + type : '';
  116. var base_url = this.baseUrl.replace('/?s=', '');
  117. var suffix = path.substring(start);
  118. var path = path.substring(0, start);
  119. var true_path = base_url + 'attachment/' + path + type + suffix;
  120. }else{
  121. var true_path = path;
  122. }
  123. return true_path;
  124. }
  125. /**
  126. * 时间戳转时间
  127. *
  128. */
  129. ns.time_to_date = function(timeStamp){
  130. if(timeStamp > 0){
  131. var date = new Date();
  132. date.setTime(timeStamp * 1000);
  133. var y = date.getFullYear();
  134. var m = date.getMonth() + 1;
  135. m = m < 10 ? ('0' + m) : m;
  136. var d = date.getDate();
  137. d = d < 10 ? ('0' + d) : d;
  138. var h = date.getHours();
  139. h = h < 10 ? ('0' + h) : h;
  140. var minute = date.getMinutes();
  141. var second = date.getSeconds();
  142. minute = minute < 10 ? ('0' + minute) : minute;
  143. second = second < 10 ? ('0' + second) : second;
  144. return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
  145. }else{
  146. return "";
  147. }
  148. }
  149. /**
  150. * url 反转义
  151. * @param url
  152. */
  153. ns.urlReplace = function(url){
  154. var new_url = url.replace(/%2B/g, "+");//"+"转义
  155. new_url= new_url.replace(/%26/g,"&");//"&"
  156. new_url= new_url.replace(/%23/g, "#");//"#"
  157. new_url= new_url.replace(/%20/g," ");//" "
  158. new_url= new_url.replace(/%3F/g, "?");//"#"
  159. new_url= new_url.replace(/%25/g, "%");//"#"
  160. new_url= new_url.replace(/&3D/g,"=");//"#"
  161. new_url= new_url.replace(/%2F/g, "/");//"#"
  162. return new_url;
  163. }