注: 微信小程序和公眾號內屏蔽了 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.csdn.net/weixin_34240657/article/details/92264873
https://blog.csdn.net/WuLex/article/details/89194384
https://blog.csdn.net/WuLex/article/details/89204850
修改 瀏覽器 地址 https://blog.csdn.net/baiyan_er/article/details/80901553
https://www.cnblogs.com/lbcxq/p/11842713.html