123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- var ns = window.ns_url;
- /* 基础对象检测 */
- ns || $.error("js-ns_url基础配置没有正确加载!");
- /**
- * 解析URL
- * @param {string} url 被解析的URL
- * @return {object} 解析后的数据
- */
- ns.parse_url = function(url){
- var parse = url.match(/^(?:([a-z]+):\/\/)?([\w-]+(?:\.[\w-]+)+)?(?::(\d+))?([\w-\/]+)?(?:\?((?:\w+=[^#&=\/]*)?(?:&\w+=[^#&=\/]*)*))?(?:#([\w-]+))?$/i);
- parse || $.error("url格式不正确!");
- return {
- "scheme" : parse[1],
- "host" : parse[2],
- "port" : parse[3],
- "path" : parse[4],
- "query" : parse[5],
- "fragment" : parse[6]
- };
- }
- ns.parse_str = function(str){
- var value = str.split("&"), vars = {}, param;
- for(val in value){
- param = value[val].split("=");
- vars[param[0]] = param[1];
- }
- return vars;
- }
- ns.parse_name = function(name, type){
- if(type){
- /* 下划线转驼峰 */
- name = name.replace(/_([a-z])/g, function($0, $1){
- return $1.toUpperCase();
- });
- /* 首字母大写 */
- name = name.replace(/[a-z]/, function($0){
- return $0.toUpperCase();
- });
- } else {
- /* 大写字母转小写 */
- name = name.replace(/[A-Z]/g, function($0){
- return "_" + $0.toLowerCase();
- });
- /* 去掉首字符的下划线 */
- if(0 === name.indexOf("_")){
- name = name.substr(1);
- }
- }
- return name;
- }
- //scheme://host:port/path?query#fragment
- ns.url = function(url, vars, suffix){
- var info = this.parse_url(url), path = [], param = {}, reg;
-
- /* 验证info */
- info.path || $.error("url格式错误!");
- url = info.path;
- /* 解析URL */
- path = url.split("/");
- path = [path.pop(), path.pop(), path.pop()].reverse();
- path[1] = path[1] || this.route[1];
- path[0] = path[0] || this.route[0];
- // param[this.route[0]] = path[0];
- // param[this.route[1]] = path[1];
- // param[this.route[2]] = path[2].toLowerCase();
- // url = param[this.route[0]] + '/' + param[this.route[1]] + '/' + param[this.route[2]];
- param[this.route[2]] = path[0];
- param[this.route[3]] = path[1];
- param[this.route[4]] = path[2].toLowerCase();
- url = param[this.route[2]] + '/' + param[this.route[3]] + '/' + param[this.route[4]];
- /* 解析参数 */
- if(typeof vars === "string"){
- vars = this.parse_str(vars);
- } else if(!$.isPlainObject(vars)){
- vars = {};
- }
- /* 添加伪静态后缀 */
- if(false !== suffix){
- suffix = suffix || 'html';
- if(suffix){
- url += "." + suffix;
- }
- }
- /* 解析URL自带的参数 */
- info.query && $.extend(vars, this.parse_str(info.query));
- /* 判断站点id是否存在 */
- var site = '';
- if(vars.site_id){
- var site_id = vars.site_id;
- delete vars.site_id;
- site = 's'+parseInt(site_id) + '/';
- }else{
- var site_id = this.route[0];
- site = site_id > 0 ? 's' + parseInt(site_id) + '/' : '';
- }
- var addon = '';
- if(info.scheme != '' && info.scheme != undefined){
- addon = info.scheme + '/';
- }
- url = site + addon + url;
- if(vars){
- var param_str = $.param(vars);
- if('' !== param_str) {
- url += ((this.baseUrl + url).indexOf('?') !== -1 ? '&' : '?') + param_str;
- }
- }
- url = this.baseUrl + url;
- return url;
- }
- /**
- * 处理图片路径
- */
- ns.img = function(path, type = '') {
- if(path.indexOf("http://") == -1 && path.indexOf("https://") == -1) {
- var start = path.lastIndexOf('.');
- type = type ? '_' + type : '';
- var base_url = this.baseUrl.replace('/?s=', '');
- var suffix = path.substring(start);
- var path = path.substring(0, start);
- var true_path = base_url + 'attachment/' + path + type + suffix;
- }else{
- var true_path = path;
- }
- return true_path;
- }
- /**
- * 时间戳转时间
- *
- */
- ns.time_to_date = function(timeStamp){
- if(timeStamp > 0){
- var date = new Date();
- date.setTime(timeStamp * 1000);
- var y = date.getFullYear();
- var m = date.getMonth() + 1;
- m = m < 10 ? ('0' + m) : m;
- var d = date.getDate();
- d = d < 10 ? ('0' + d) : d;
- var h = date.getHours();
- h = h < 10 ? ('0' + h) : h;
- var minute = date.getMinutes();
- var second = date.getSeconds();
- minute = minute < 10 ? ('0' + minute) : minute;
- second = second < 10 ? ('0' + second) : second;
- return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
- }else{
- return "";
- }
- }
- /**
- * url 反转义
- * @param url
- */
- ns.urlReplace = function(url){
- var new_url = url.replace(/%2B/g, "+");//"+"转义
- new_url= new_url.replace(/%26/g,"&");//"&"
- new_url= new_url.replace(/%23/g, "#");//"#"
- new_url= new_url.replace(/%20/g," ");//" "
- new_url= new_url.replace(/%3F/g, "?");//"#"
- new_url= new_url.replace(/%25/g, "%");//"#"
- new_url= new_url.replace(/&3D/g,"=");//"#"
- new_url= new_url.replace(/%2F/g, "/");//"#"
- return new_url;
- }
|