这几天遇到这样一个需求,需要在不同页面之前传递参数,一般我们都是通过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}
这样只要在新窗口调用这个方法我们就能返回一个对象字面量的参数来供我们使用了。