无意中看到有人提得:用javascript文件传递参数,并在此文件中获取相关参数的值
在网上搜索了一下,有人提出用如下方法:
var param = document.scripts[document.scripts.length-1].src;
此方法可以获得此JS文件的地址及其参数
var param =document.getElementsByTagName("script")[document.getElementsByTagName("script").length-1].src.split("?")[1]
此方法可以获得此JS文件的参数部分
综合以前利用js方法实现html静态页面间参数传递的方法,更改如下变可以实现:
var request = {
QueryString : function(val){
var param ="?"+document.getElementsByTagName("script")[document.getElementsByTagName("script").length-1].src.split("?")[1]
var re = new RegExp("" +val+ "=([^&?]*)", "ig");
return ((param.match(re))?(param.match(re)[0].substr(val.length+1)):null);
}
}
参数值的获取:request.QueryString("参数名称")
此方法是前面所学的一种灵活运用,和ASP文件获取参数的一样,容易掌握。
另外也有人提到用如下方法来获取(个人认为太复杂):
var getArgs=(function(){
var sc=document.getElementsByTagName('script');
var paramsArr=sc[sc.length-1].src.split('?')[1].split('&');
var args={},argsStr=[],param,t,name,value;
for(var ii=0,len=paramsArr.length;ii<len;ii++){
param=paramsArr[ii].split('=');
name=param[0],value=param[1];
if(typeof args[name]=="undefined"){ //参数尚不存在
args[name]=value;
}else if(typeof args[name]=="string"){ //参数已经存在则保存为数组
args[name]=[args[name]]
args[name].push(value);
}else{ //已经是数组的
args[name].push(value);
}
}
/*在实际应用中下面的showArg和args.toString可以删掉,这里只是为了测试函数getArgs返回的内容*/
var showArg=function(x){ //转换不同数据的显示方式
if(typeof(x)=="string"&&!//d+/.test(x)) return "'"+x+"'"; //字符串
if(x instanceof Array) return "["+x+"]" //数组
return x; //数字
}
//组装成json格式
args.toString=function(){
for(var ii in args) argsStr.push(ii+':'+showArg(args[ii]));
return '{'+argsStr.join(',')+'}';
}
return function(){return args;} //以json格式返回获取的所有参数
})();