166 lines
4.7 KiB
JavaScript
166 lines
4.7 KiB
JavaScript
|
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;
|
|||
|
}
|