获取当前页面参数Hash和Search,或者当前Script的参数

一、获取当前Script附带的参数

getScriptArgs: function() { //获取多个参数 
            var scripts = document.getElementsByTagName("script"),
                script = scripts[scripts.length - 1], //因为当前dom加载时后面的script标签还未加载,所以最后一个就是当前的script 
                src = script.src,
                reg = /(?:\?|&)(.*?)=(.*?)(?=&|$)/g,
                temp, res = {};
            res["src"] = src;
            while ((temp = reg.exec(src)) != null) res[temp[1]] = decodeURIComponent(temp[2]);
            return res;
        }

  

二、根据名字获取Hash值

function getQueryString(name) {
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
	var r = window.location.hash.substr(1).match(reg);
	if (r != null)
		return r[2];
	return null;
}

三、应用实例

//lastest: 
var getArgs = function() { //get url querystring 
	var params = document.location.search,
		reg = /(?:^\?|&)(.*?)=(.*?)(?=&|$)/g,
		temp, args = {};
	while ((temp = reg.exec(params)) != null) args[temp[1]] = decodeURIComponent(temp[2]);
	return args;
};
//只取一个: 
var queryString = function(key) {
	return (document.location.search.match(new RegExp("(?:^\\?|&)" + key + "=(.*?)(?=&|$)")) || ['', null])[1];
}
var args = getArgs();
alert(args.name + " | " + args.sex + " | " + args.age);
//测试链接:<a href="?name=abc&sex=男&age=12">test getQueryString</a> // JavaScript Document



var getScriptArgs = function() { //获取多个参数 
	var scripts = document.getElementsByTagName("script"),
		script = scripts[scripts.length - 1], //因为当前dom加载时后面的script标签还未加载,所以最后一个就是当前的script 
		src = script.src,
		reg = /(?:\?|&)(.*?)=(.*?)(?=&|$)/g,
		temp, res = {};
	while ((temp = reg.exec(src)) != null) res[temp[1]] = decodeURIComponent(temp[2]);
	return res;
};
var args = getScriptArgs();
alert(args.a + " | " + args.b + " | " + args.c);
//假如上面的js是在这个js1.js的脚本中<script type="text/javascript" src="js1.js?a=abc&b=汉字&c=123"></script> 

var getScriptArg = function(key) { //获取单个参数 
	var scripts = document.getElementsByTagName("script"),
		script = scripts[scripts.length - 1],
		src = script.src;
	return (src.match(new RegExp("(?:\\?|&)" + key + "=(.*?)(?=&|$)")) || ['', null])[1];
};
alert(getScriptArg("c"));

  

posted @ 2014-03-19 16:25  浮生如斯  阅读(686)  评论(0编辑  收藏  举报