這幾天遇到這樣一個需求,需要在不同頁面之前傳遞參數,一般我們都是通過URL來傳遞,如下
window.open('test.html?id=123&name=456')
然后在新窗口的時候我們再用window.location.search方法獲取?后面的參數內容,但是拿到的內容是“?id=123&name=456”這樣的形式,我們還需要進行一系列的字符串處理才能拿到我們需要的信息,這樣就比較麻煩一些了,所以我們就基於這個需求封裝一個工具方法來把參數后面的內容解析成一個對象字面量來供我們使用,代碼如下
function urlParse(){ var url = window.location.search; var obj = {}; var reg = /[?&][^?&]+=[^?&]+/g; var arr = url.match(reg); if (arr) { arr.forEach(function (item) { var tempArr = item.substring(1).split('='); var key = decodeURIComponent(tempArr[0]); var val = decodeURIComponent(tempArr[1]); obj[key] = val; }); } return obj; }
urlParse() // return {id:123,name:456}
這樣只要在新窗口調用這個方法我們就能返回一個對象字面量的參數來供我們使用了。