方式①
function getUrlParam(key) {
var reg = new RegExp(key + '=([^&]*)');
var results = location.href.match(reg);
return results ? results[1] : null;
}
方式②
/**
* 获取url参数值
* @method getUrlParam
* @param {String} paramName 参数名
* @return {String} 参数值
*/
getUrlParam = function(paramName) {
var href = window.location.href;
var url = decodeURI(href);
var idx = url.indexOf("?");
var params = url.substring(idx + 1);
if (params) {
params = params.split("&");
for (var i = 0; i < params.length; i += 1) {
var param = params[i].split("=");
if (param[0] == paramName) {
//完善获取url参数的逻辑
var pArr = [];
for (var k = 1, len = param.length; k < len; k++) {
pArr.push(param[k]);
}
var p = pArr.join('=');
var idx1 = p.indexOf("#");
if (idx1 != -1) {
p = p.substring(0, idx1);
}
return p;
}
}
}
};
方式③
/**
* 通过正则表达式获取url参数
* 支持锚点#与自定义参数分割形式
*/
getUrlParamObject = function(external, split) {
var reg = /^.*\?{1}(.*)/;
var result = [];
var href = window.location.href;
var url = decodeURI(href);
var param = reg.exec(url);
if (param == null || param.length == 1 || param[1] == '')
return result;
var reg2 = /(?:([^&#]*?)=([^&#]*))[&#]?/g;
// 匹配前面参数
param[1].replace(reg2, function(a, b, c) {
analyseParam(b, c);
});
/*var reg3 = /[&#](?:([^&#]*?)=([^&#]*))$/g;
// 匹配最末尾参数
param[1].replace(reg3,function(a,b,c){
analyseParam(b,c);
});*/
function analyseParam(key, value) {
if (/=/.test(value) && external) {
var reg4 = new RegExp('(?:([^' + split + ']*?)=([^' + split + ']*))' + split + '', 'g');
var sub = [];
value.replace(reg4, function(a, b, c) {
sub.push({
key: b,
value: c,
type: 'string'
});
});
var reg5 = new RegExp('' + split + '(?:([^' + split + ']*?)=([^' + split + ']*))$', 'g');
value.replace(reg5, function(a, b, c) {
sub.push({
key: b,
value: c,
type: 'string'
});
});
result.push({
key: key,
type: 'object',
value: sub
});
} else {
result.push({
key: key,
type: 'string',
value: value
});
}
}
return result;
};