實現(xiàn)代碼:history模式
// 刪除url中某個參數(shù),并跳轉(zhuǎn)
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
? ? };
}
hash模式:
function?funcUrlDel(name)?{
????var?loca?=?window.location;
????var?baseUrl?=?loca.origin?+?loca.pathname;
????var?query?=?loca.hash;
????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;
????}
??},
注意
1.URL:http://b.a.com:88/index.php?name=kang&how=#when=2016#first
search:"?name=kang&how=" ? ? 第一個"?"之后
hash:"#when=2016#first" ? ? ? ?第一個"#"之后的內(nèi)容
2,為什么 window.location.search 為空?
答:注意上面的search和hash的區(qū)別,如果URL中“?”之前有一個“#”比如:“http://localhost:63342/index.html#/version?type=35&id=5”那么使用window.location.search得到的就是空(“”)。因為“?type=35&id=5”串字符是屬于“#/version?type=35&id=5”這個串字符的,也就是說查詢字符串search只能在取到“?”后面和“#”之前的內(nèi)容,如果“#”之前沒有“?”search取值為空。