该方法可以修改url的参数。
例如将
www.baidu.com
修改为
www.baidu.com?name=123
操作为:
window.location.href = changeURLArg(window.location.href,'name',123)
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代码
1、读取URL
中的参数值
/*
*获取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;
};
调用方法:
var nameVal=GetQueryString("URL上的参数名");
举例:
浏览器地址连上的地址为:
http://www.aazj.cn/pc/meeting/card.html?skinColor=30&gid=-1&userId=566&modid=1133&puid=9
那么
var userIdVal=GetQueryString("userId") //值就等于566
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
加入希望修改userId的值为333,那么
replaceParamVal("userId","333")
URL就会变成
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);