js快捷获取超链接参数和修改超链接(新增URLSearchParams方法获取参数)

//https://www.baidu.com?sjry=111

function GetRequest() {
            var url = location.search;
            var theRequest = new Object();
            if (url.indexOf("?") != -1) {
                var str = url.substr(1);
                strs = str.split("&");
                for (var i = 0; i < strs.length; i++) {
                    theRequest[strs[i].split("=")[0]] = decodeURIComponent(strs[i].split("=")[1]);
                }
            }
            return theRequest;
        }
console.log(GetRequest().sjry)//111

犀牛书超链接获取参数例子

   function urlArgs(){
        var args = {};                              //定义一个空对象
        var query = location.search.substring(1);   //查找到查询串,并去掉‘?’
        var pairs = query.split("&");               //根据‘&’符号将查询字符串分隔开
        for(var i = 0;i<pairs.length;i++){          //对于每个片段
            var pos = pairs[i].indexOf('=');        //查找‘name=value’
            if(pos == -1) continue;                 //如果没有找到的话,就跳过
            var name = pairs[i].substring(0,pos);   //提取name
            var value = pairs[i].substring(pos+1);  //提取value
            value = decodeURIComponent(value);      //对value进行解码
            args[name] = value;                     //存储为属性
        }
        return args;                                //返回解析后的参数
    }

Jquery添加 或者修改url中参数的值

     // 添加 或者 修改 url中参数的值
        function UpdateUrlParam(name, val) {
            var thisURL = document.location.href;
            // 如果 url中包含这个参数 则修改
            if (thisURL.indexOf(name+'=') > 0) {
                var v = getUrlParam(name);
                if (v != null) {
                    // 是否包含参数
                    thisURL = thisURL.replace(name + '=' + v, name + '=' + val);
                }
                else {
                    thisURL = thisURL.replace(name + '=', name + '=' + val);
                }
            } // 不包含这个参数 则添加
            else {
                if (thisURL.indexOf("?") > 0) {
                    thisURL = thisURL + "&" + name + "=" + val;
                }
                else {
                    thisURL = thisURL + "?" + name + "=" + val;
                }
            }
            location.href = thisURL;
        };

URLSearchParams方法获取参数

现在再也不用正则这么复杂去获取浏览器的查询参数啦,浏览器给我们直接提供了一个URLSearchParams接口,让我们可以对查询参数有很大的操作空间,而且比起之前使用正则,更加简洁直接

//首先把使用URLSearchParams方法实现获取url参数的代码呈上
const urlSearchParams = new URLSearchParams(window.location.search);
const params = Object.fromEntries(urlSearchParams.entries());

console.log(params) // {id: '2', isShare: 'true'}
console.log(params.id) // 2

是不是超级简单,只需要以url作为参数传入,并且创建URLSearchParams的一个实例对象,然后调用entries()这个方法,返回一个迭代协议iterator,该协议支持可以遍历所有支持健/值对的列表

此时还需要通过Object.fromEntries()这个方法去把该健/值对的列表,然后我们就可以愉快地使用获取到的参数啦

URLSearchParams的兼容性

 

URLSearchParams本身不兼容IE如果实在要兼容IE,也不要怕,可以使用url-search-params-polyfill这个插件去使用啦

安装方式:npm install url-search-params-polyfill --save
使用方式:const params = new URLSearchParams("id=2&isShare=true");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 jQuery Mobile 中,您可以使用 JavaScript/jQuery 来传递中文参数获取它们。您可以使用 `encodeURIComponent` 函数对中文参数进行编码,然后将其作为查询字符串参数传递给超链接。 以下是一个示例代码: ```html <!DOCTYPE html> <html> <head> <title>jQuery Mobile 中文参数传递示例</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> </head> <body> <div data-role="page" id="page1"> <div data-role="header"> <h1>首页</h1> </div> <div data-role="content"> <a href="#" id="myLink">点击这里</a> </div> </div> <script> $(document).on("pagecreate", "#page1", function() { $("#myLink").on("click", function(e) { e.preventDefault(); var chineseParam = "中文参数"; var encodedParam = encodeURIComponent(chineseParam); var url = "page2.html?param1=" + encodedParam; // 跳转到 page2.html window.location.href = url; }); }); </script> </body> </html> ``` 上述代码中,我们创建了一个简单的页面,其中包含一个超链接 `<a href="#" id="myLink">点击这里</a>`。当用户点击该超链接时,通过 JavaScript/jQuery 的事件处理函数,我们获取中文参数 "中文参数" 并使用 `encodeURIComponent` 函数对其进行编码。然后,我们将编码后的参数添加到 URL 中,并使用 `window.location.href` 将页面重定向到带有中文参数的目标页面(在此示例中为 `page2.html`)。 在目标页面 `page2.html` 中,您可以使用 JavaScript/jQuery 来获取传递的中文参数并进行相应的处理。例如: ```html <!DOCTYPE html> <html> <head> <title>目标页面</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> <script> $(document).ready(function() { var url = new URL(window.location.href); var encodedParam = url.searchParams.get("param1"); var chineseParam = decodeURIComponent(encodedParam); alert("传递的中文参数是:" + chineseParam); }); </script> </head> <body> <h1>目标页面</h1> </body> </html> ``` 在上述代码中,我们使用 JavaScript 的 `URL` 对象来获取 URL 中的查询字符串参数,并使用 `decodeURIComponent` 函数对编码后的中文参数进行解码。然后,您可以根据需要对该参数进行进一步处理。在此示例中,我们使用 `alert` 函数显示传递的中文参数。 请注意,上述代码仅用于演示目的,并假定 `page2.html` 是存在的页面。您可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值