search和hash的区别,如果URL中“?”之前有一个“#”比如:“http://localhost:63342/index.html#/version?type=35&id=5”那么使用window.location.search得到的就是空(“”)。因为“?type=35&id=5”串字符是属于“#/version?type=35&id=5”这个串字符的,也就是说查询字符串search只能在取到“?”后面和“#”之前的内容,如果“#”之前没有“?”search取值为空。
所以我做了一个通用的方法
方法 1:
function getQueryString() {
var obg={},a='';
(a=window.location.search.substr(1))||(a=window.location.hash.split('?')[1])
a.split(/&/g).forEach(function(item){
obg[(item=item.split('='))[0]]=item[1];
})
return obg
}
getQueryString();
方法 2:
function getQueryString(e) { //要传入key值
var t = new RegExp("(^|&)" + e + "=([^&]*)(&|$)");
var a = window.location.href.match(t);
if (a != null) return a[2];
return ""
}
网友评论