js处理url参数

Posted 学习伴随一生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js处理url参数相关的知识,希望对你有一定的参考价值。

var UrlArgent = {
            Parsed: false, //是否已解析
            Cache: {}, //缓存值
            ParseArg: function () {
                // 解析地址栏的参数值
                UrlArgent.Parsed = true;
                var url = location.search;
                if (-1 == url.indexOf(‘?‘)) return;

                var args = url.substr(1).split("&");
                for (var i = 0; i < args.length; i++) {
                    var tmp = args[i];
                    var pos = tmp.indexOf(‘=‘);
                    if (-1 == pos) continue;
                    UrlArgent.Cache[tmp.substr(0, pos)] = tmp.substr(pos + 1);
                }
            },
            GetItem: function (queryStringName, defaultVal) {
                // 获取单个项目的值  queryStringName大小写敏感,及区分大小写
                if (UrlArgent.Parsed == false) UrlArgent.ParseArg();

                return UrlArgent.Cache[queryStringName] || (typeof (defaultVal) == ‘undefined‘ ? ‘‘ : defaultVal.toString());
            },
            GetItemIgnore: function (queryStringName, defaultVal) {
                // 获取单个项目的值  queryStringName忽略大小写
                if (UrlArgent.Parsed == false) UrlArgent.ParseArg();
                
                for (var k in UrlArgent.Cache) {
                    if (UrlArgent.Cache.hasOwnProperty(k) == false) continue; //只取私有属性
                    if (k.toLowerCase() == queryStringName.toLowerCase()) return UrlArgent.Cache[k];
                }

                return (typeof (defaultVal) == ‘undefined‘ ? ‘‘ : defaultVal.toString());
            },
            GetUrl: function (newValue, ignore) {
                // 获取url参数 newValue增加或修改的值  ignore关键字是否忽略大小写,true忽略大小写其他值大小写敏感
                if (typeof (newValue) != ‘object‘) return location.search.substr(1); //原样返回

                if (UrlArgent.Parsed == false) UrlArgent.ParseArg();

                var url = [];
                for (var k in UrlArgent.Cache) {
                    if (UrlArgent.Cache.hasOwnProperty(k) == false) continue; //只取私有属性

                    var val = UrlArgent.Cache[k]; //默认是原值
                    for (var n in newValue) {
                        if (newValue.hasOwnProperty(n) == false) continue;

                        if ((k == n) || (ignore == true && k.toLowerCase() == n.toLowerCase())) { //需要替换原来的值
                            val = newValue[n].toString(); //赋新值
                            newValue[n] = null; //清除设置了值的项
                        }
                    }
                    url.push(k + ‘=‘ + val);
                }

                for (var n in newValue) { //新增加的键值
                    if (newValue.hasOwnProperty(n) == false) continue;
                    if (newValue[n] == null) continue;
                    url.push(n + ‘=‘ + newValue[n].toString());
                }

                return url.join(‘&‘);
            }

        };

 

使用:

        var a = UrlArgent.GetItem(‘x‘);
        var x = UrlArgent.GetItem(‘x‘, 0);
        var y = UrlArgent.GetItemIgnore(‘X‘);
        var s = UrlArgent.GetUrl();
        var w = UrlArgent.GetUrl({ "x": "vv", "ismobilE": "vs" });
        var z = UrlArgent.GetUrl({ "X": "vv", "ismobilE": "vs" }, true);

 

以上是关于js处理url参数的主要内容,如果未能解决你的问题,请参考以下文章

Url参数处理方法(js,querystring,lodash)

js处理url参数

URL 片段中的多个参数

在保持相同行为的同时隐藏 url 中的 #hash 片段?

js URL带有空格参数的处理方法

js处理url中的请求参数(编码/解码)