网上有大把现成的代码,不过有点小小的瑕疵
例如目前最流行的 正则法:
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 解码,如果不需要请删除!
没有值的时候返回"";