- 我們在獲取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