替换url参数
function replaceUrlParams(key, val) { let href = location.href; if (href.indexOf("?") === -1) return; var query = href.indexOf("?") + 1; var hash = href.indexOf("#") + 1; var first = href.substring(query, hash === 0 ? href.length : hash - 1); var sec = hash === 0 ? "" : href.substring(hash); first = first .split("&") .map(function (param) { return param.startsWith(key + "=") ? key + "=" + val : param; }) .join("&"); history.replaceState( "", "", href.substring(0, query) + first + (hash === 0 ? "" : "#" + sec) ); }
若指定参数不存在则自动添加:
function replaceUrlParams(key, val) { var href = location.href; if (href.indexOf("?") === -1) return; var query = href.indexOf("?") + 1; var hash = href.indexOf("#") + 1; var first = href.substring(query, hash === 0 ? href.length : hash - 1); var sec = hash === 0 ? "" : href.substring(hash); if (first.indexOf(key + "=") != -1) first = first .split("&") .map(function (param) { return param.startsWith(key + "=") ? key + "=" + val : param; }) .join("&"); else first += "&" + key + "=" + val; history.replaceState( "", "", href.substring(0, query) + first + (hash === 0 ? "" : "#" + sec) ); }
获取:
function getQueryParamObj() { var str = location.href; var res = {}; if (str.indexOf("?") === -1) return res; var hash = str.indexOf("#"); str = str.substring(str.indexOf("?") + 1, hash === -1 ? str.length : hash); //str.split("?")[1]; str.split("&").forEach(function (el) { var arr = el.split("="); res[arr[0]] = arr[1]; }); return res; } function getQueryParam() { var str = location.href; var res = []; if (str.indexOf("?") === -1) return res; var hash = str.indexOf("#"); str = str.substring(str.indexOf("?") + 1, hash === -1 ? str.length : hash); //str.split("?")[1]; str.split("&").forEach(function (el) { var arr = el.split("="); res.push({ key: arr[0], val: arr[1], }); }); return res; }