使用js修改url地址参数并修改url地址

注: 微信小程序和公众号内屏蔽了  eval() 函数,需要用其他方法解决

修改浏览器地址参数:

function changeURLArg(url,arg,arg_val){
    var pattern=arg+'=([^&]*)';
    var replaceText=arg+'='+arg_val; 
    if(url.match(pattern)){
        var tmp='/('+ arg+'=)([^&]*)/gi';
        tmp=url.replace(eval(tmp),replaceText);
        return tmp;
    }else{ 
        if(url.match('[\?]')){ 
            return url+'&'+replaceText; 
        }else{ 
            return url+'?'+replaceText; 
        } 
    }
}

/**
 * 获取url里的参数
 * @param arg 参数名
 * @returns
 */
function getURLString(arg) { 
    var reg = new RegExp("(^|&)" + arg + "=([^&]*)(&|$)", "i"); 
    var r = window.location.search.substr(1).match(reg); 
    if (r != null) 
        return unescape(r[2]);
    return null; 
} 

 

//调用结果如下: 
var url = window.location.href; 
changeURLArg(url, "id", 99); // http://www.csdn.com/?id=99&ttt=3 
changeURLArg(url, "haha", 33); // http://www.csdn.com/?id=99&ttt=3&haha=33

读取URL中的参数、修改URL参数、动态修改URL replaceState js代码

/*
*获取URL参数
*/
function GetQueryString(name)
{
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    }
    return null;
};

2、修改URL参数

//替换指定传入参数的值,paramName为参数,replaceWith为新值
function replaceParamVal(paramName,replaceWith) {
    var oUrl = this.location.href.toString();
    var re=eval('/('+ paramName+'=)([^&]*)/gi');
    var nUrl = oUrl.replace(re,paramName+'='+replaceWith);
    this.location = nUrl;
window.location.href=nUrl
}

使用:

//http://www.aazj.cn/pc/meeting/card.html?skinColor=30&gid=-1&userId=566&modid=1133&puid=9

replaceParamVal("userId","333")

//http://www.aazj.cn/pc/meeting/card.html?skinColor=30&gid=-1&userId=333&modid=1133&puid=9

3、动态修改URL

var newUrl="新的Url";
var stateObject = 0;
var title="0"
history.replaceState(stateObject,title,newUrl);

javascript 删除 url 中指定参数,并返回 url

实现代码

// 删除url中某个参数,并跳转
function funcUrlDel(name){
    var loca = window.location;
    var baseUrl = loca.origin + loca.pathname + "?";
    var query = loca.search.substr(1);
    if (query.indexOf(name)>-1) {
        var obj = {}
        var arr = query.split("&");
        for (var i = 0; i < arr.length; i++) {
            arr[i] = arr[i].split("=");
            obj[arr[i][0]] = arr[i][1];
        };
        delete obj[name];
        var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g,"").replace(/\:/g,"=").replace(/\,/g,"&");
        return url
    };
}

 

//url: http//xx.com/list?page=1&a=5

执行代码
funcUrlDel("page")

//http//xx.com/list?a=5

修改浏览器地址:

浏览器窗口有一个history对象,用来保存浏览历史。

检查浏览器是否支持 
if (window.history){ 
// 支持History API 
} else { 
// 不支持 
}

history对象提供了一系列方法,允许在浏览历史之间移动。

其中包括 
history.back(); 回退
history.forward(); 前进
history.go(0)//刷新当前页面;

HTML5为history对象添加了两个新方法,history.pushState()和history.replaceState(),用来在浏览历史中添加和修改记录。

都会改变浏览器标签栏中的URL值,区别在于pushState()会将之前的地址记录在history对象中,通过back()可以返回前一页,replaceState()则不能返回

转:

https://blog.youkuaiyun.com/weixin_34240657/article/details/92264873

https://blog.youkuaiyun.com/WuLex/article/details/89194384

https://blog.youkuaiyun.com/WuLex/article/details/89204850

修改 浏览器 地址 https://blog.youkuaiyun.com/baiyan_er/article/details/80901553

https://www.cnblogs.com/lbcxq/p/11842713.html

JavaScript中,可以使用以下代码来修改URL地址参数: ```javascript function changeURLParam(url, paramName, paramValue) { let reg = new RegExp('(\[?&\]' + paramName + '=)\[^&\]*', 'i'); if (url.match(reg)) { return url.replace(reg, '$1' + paramValue); } else { if (url.indexOf('?') === -1) { return url + '?' + paramName + '=' + paramValue; } else { return url + '&' + paramName + '=' + paramValue; } } } let currentURL = window.location.href; let modifiedURL = changeURLParam(currentURL, 'type', 'newValue'); console.log(modifiedURL); ``` 这段代码定义了一个名为`changeURLParam`的函数,它接受三个参数URL地址、要修改参数名和新的参数值。函数会根据参数名在URL中查找对应的参数将其值替换为新的参数值。如果URL中不存在该参数,则会在URL末尾添加该参数和对应的值。最后,函数会返回修改后的URL。 你可以将当前页面的URL作为参数传递给`changeURLParam`函数,然后将返回的修改后的URL赋值给`window.location.href`,即可实现修改URL地址参数的功能。 #### 引用[.reference_title] - *1* [使用js修改url地址参数修改url地址](https://blog.youkuaiyun.com/shadow_zed/article/details/112802245)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [JS 在不跳转情况下修改地址URL参数](https://blog.youkuaiyun.com/qq_41241504/article/details/126367345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值