- 我們在獲取url參數時,會常常用到截取參數
getUrlParam(name) {
const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)') // 構造一個含有目標參數的正則表達式對象
const r = window.location.search.substr(1).match(reg) // 匹配目標參數
if (r != null) {
return unescape(r[2]) // 返回參數值
} else {
return null
}
}
2. 但這樣 window.location.search 這樣常常會獲取不到。
原因是; search只能在取到“?”后面和“#”之前的內容,如果“#”之前沒有“?”search取值為空。它默認參數和#是一個字符串
3.完善
function getQueryString(key)
{
var after = window.location.search;
if(after.indexOf('?') === -1) return null; //如果url中沒有傳參直接返回空
//key存在先通過search取值如果取不到就通過hash來取
after = after.substr(1) || window.location.hash.split("?")[1];
if(after)
{
var reg = new RegExp("(^|&)"+ key +"=([^&]*)(&|$)");
var r = after.match(reg);
if(r != null)
{
return decodeURIComponent(r[2]);
}
else
{
return null;
}
}
}
4.對於沒有#號url ,最好的是方法是:
let data = {};
let src = window.location.href
let index = src.indexOf("?");
if (index === -1) {
return data;
}
let dataStr = src.substring(src.indexOf("?") + 1);
let dataArray = dataStr.split("&");
for (let i = 0; i < dataArray.length; i++) {
let param = dataArray[i].split("=");
data[param[0]] = param[1];
}
// urlData 是{} 放在data中。
this.urlData = data
