JS获取URL信息类

主要功能有:

1.获取URL基本信息,包括:网址,协议,端口号等。

2.地址栏获取参数。

3.将json格式的参数对象转换成字符串。

 

//获取URL信息
var shaoURL = shaoURL || {};
(function (n){
    var d = {
        pathname:window.location.pathname,    //设置或获取对象指定的文件名或路径。
        href:window.location.href,    //设置或获取整个 URL 为字符串。
        port:window.location.port,    //设置或获取与 URL 关联的端口号码。
        protocol:window.location.protocol.split(":")[0],    //设置或获取 URL 的协议部分。
        host:window.location.host,    //设置或获取 location 或 URL 的 hostname 和 port 号码
        hash:window.location.hash,    //设置或获取 href 属性中在井号“#”后面的分段
        param:window.location.search,    //设置或获取 href 属性中跟在问号后面的部
        referrer:document.referrer    //获取来源页地址
    };
    n.get = function(){
        var arrA = [];
        var arrB = [];
        for(var i in d){
            arrA.push(i);
            arrB.push(d[i]);
        };
        return {
            item:arrA,
            key:arrB
        };
    };
    n.getA = function(){
        return d;
    };
    n.getB = function(p){
        return d[n.get().item[p]];
    };
    n.getC = function(key){
        return d[key];
    };
    n.getD = function(key){
        var reg = new RegExp("(^|&)"+ key +"=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if(r!=null)return unescape(r[2]); return null;
    };
    n.getE = function(){
        var r = window.location.hash;
        if(r!=null) return r.substr(1); return null;
    };
    //json转url字符串
    n.JsonToURL = function(o){
        var str = "";
        for(var key in o){
            if(o[key]!=-1){
                str += key + "=" + encodeURIComponent(o[key]) + "&";
            }
        }
        str = str.substring(0,str.length-1);
        return str;
    };
    //param 将要转为URL参数字符串的对象
    //key URL参数字符串的前缀
    //encode true/false 是否进行URL编码,默认为true
    //return URL参数字符串
    //var obj = {name:"tom","class":{className:"class1"},classMates:[{name:"shao"}]};
    //JsonParam(obj);
    n.JsonParam = function(param, key, encode) {
        if(param==null) return '';
            var str = '';
            var t = typeof (param);
            if (t == 'string' || t == 'number' || t == 'boolean') {
            str += '&' + key + '=' + ((encode==null||encode) ? encodeURIComponent(param) : param);
        } else {
            for (var i in param) {
                var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i);
                str += '&' + n.JsonParam(param[i], k, encode);
            }
        }
        return str.substr(1);
    };
    //json转url字符串
    //param 将要转为URL参数字符串的对象
    //key URL参数字符串的前缀
    //return URL参数字符串
    //var obj = {name:"tom","class":{className:"class1"},classMates:[{name:"shao"}]};
    //parseParam(obj);
    n.parseParam = function(param,key){
        var str = "";
        if(param instanceof String || param instanceof Number|| param instanceof Boolean){
            str += "&" + key + "=" + encodeURIComponent(param);
        } else {
            /*
            for(var i in param){
                var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i);
                str += '&' + parseParam(param[i], k);
            }
            */
            $.each(param,function(i){
                var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i);
                str += '&' + n.parseParam(this, k);
            });
        };
        return str.substr(1);
    };

})(shaoURL);

初次写博客,希望大家多多指教。