网上有大把现成的代码,不过有点小小的瑕疵
例如目前最流行的 正则法:
function getArgument(_arg) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if(r!=null)return unescape(r[2]); return ""; }
但是当URL中 包含#的时候会失效,例如 http://abc.def.com/kkk/#dfff?id=123344
原因是在获取?后的字符串使用了:
window.location.search
但是现在因为有了# 而# 后面的部分作为了 hash值, 所以用 loaciton.search取不到值了
所以 要兼容这种情况就不能再这样取,用原始的办法取一次,
兼容版如下:
function getArgument(_arg) { var _t=window.location.href.split("?") if(_t.length>1) { var reg = new RegExp("(^|&)"+ _arg +"=([^&]*)(&|$)"); var r = _t[1].match(reg); if(r!=null)return unescape(r[2]); return ""; } return ""; }
注意 我这里在返回结果是进行了unescape 解码,如果不需要请删除!
没有值的时候返回"";