用JavaScript 处理 URL 的两个函数代码
用JavaScript 处理 URL 的两个函数代码
发布时间:2016-12-30 来源:查字典编辑
摘要:functionrequest(paras){//获取url的参数值,不区分大小写,如无此参数,返回空字符串.varurl=location...

functionrequest(paras){//获取url的参数值,不区分大小写,如无此参数,返回空字符串.

varurl=location.href;

varparaString=url.substring(url.indexOf("?")+1,url.length).split("&");

varparaObj={}

for(i=0;j=paraString[i];i++){

paraObj[j.substring(0,j.indexOf("=")).toLowerCase()]=j.substring(j.indexOf("=")+1,j.length);

}

varreturnValue=paraObj[paras.toLowerCase()];

if(typeof(returnValue)=="undefined"){

return"";

}else{

returnreturnValue;

}

}

functionredirect(){//第一个参数是当前url,如http://localhost/demo.asp?xxx=zzz,第二个及以后的参数形式必须为xxx=yyy,mm=bbbbb最终跳转url为http://localhost/demo.asp?xxx=yyy&aaa=bbb

if(arguments.length==1){

location.href=arguments[0];

return;

}else{

varparaObj={};

if(arguments[0].indexOf("?")!=-1){

varcurUrlParas=arguments[0].substring(arguments[0].indexOf("?")+1,arguments[0].length).split("&");

for(i=0;j=curUrlParas[i];i++){

paraObj[j.substring(0,j.indexOf("=")).toLowerCase()]=j.substring(j.indexOf("=")+1,j.length);

}

}

for(i=1;j=arguments[i];i++){

paraObj[j.substring(0,j.indexOf("=")).toLowerCase()]=j.substring(j.indexOf("=")+1,j.length);

}

varnewURL="";

for(keyinparaObj){

newURL+=key+"="+paraObj[key]+"&";

}

if(arguments[0].indexOf("?")!=-1){

newURL=arguments[0].substring(0,arguments[0].indexOf("?")+1)+newURL.substring(0,newURL.length-1);

}else{

newURL=arguments[0]+"?"+newURL.substring(0,newURL.length-1);

}

location.href=newURL;

return;

}

}

第二个函数redirect如果只有一个参数时,就是简单的重定向,当有2个或以上的参数时,就能动态指定目的url,该函数可用于翻页功能,比如redirect("http://www.xxx.com/list.asp?page=1","page="+parseInt(request("page"))+1),还可用于url类型的搜索,如:redirect("http://www.xxx.com/search.asp","range="+escape($("range").value),"keyword="+escape($("keyword").value)),url的操作变得简单起来。

redirect的核心是建立一个url参数表(hashtable),函数的第二个及以后的参数都是添加到该hashtable中,最后把该表序列化为目的url。

刚发完日志,就想到可以再改进一下,增加一个参数,决定是否用新窗口打开目的url。

/*

第一个参数是当前url,如http://localhost/demo.asp?xxx=zzz,

第二个及以后的参数形式必须为xxx=yyy,mm=bbbbb

最终跳转url为http://localhost/demo.asp?xxx=yyy&aaa=bbb

*/

functionredirect(){

if(arguments.length==0){

return;

}

if(arguments.length==1){

location.href=arguments[0];

return;

}elseif(arguments.length==2){

(arguments[1]==true)?window.open(arguments[0]):location.href=arguments[0];

return;

}else{

varparaObj={};

if(arguments[0].indexOf("?")!=-1){

varcurUrlParas=arguments[0].substring(arguments[0].indexOf("?")+1,arguments[0].length).split("&");

for(i=0;j=curUrlParas[i];i++){

paraObj[j.substring(0,j.indexOf("=")).toLowerCase()]=j.substring(j.indexOf("=")+1,j.length);

}

}

for(i=2;j=arguments[i];i++){

paraObj[j.substring(0,j.indexOf("=")).toLowerCase()]=j.substring(j.indexOf("=")+1,j.length);

}

varnewURL="";

for(keyinparaObj){

newURL+=key+"="+paraObj[key]+"&";

}

if(arguments[0].indexOf("?")!=-1){

newURL=arguments[0].substring(0,arguments[0].indexOf("?")+1)+newURL.substring(0,newURL.length-1);

}else{

newURL=arguments[0]+"?"+newURL.substring(0,newURL.length-1);

}

arguments[1]==true?window.open(newURL):location.href=newURL;

return;

}

}

根据昨天临下班前的想法,再修改一下,把第二个参数放到最后面去。

/*

UseAge:

redirect(url,[paras_1],[paras_2],...,[paras_n],[newWin])

paras_n:url参数,形式如page=1或type=news等。

newWin:函数的最后一个参数,布尔类型,为true时,用新窗口(window.open)打开url,否则用当前窗口(location.open)打开。默认值为false。

Example:

redirect("http://www.google.com/search","q=hello","start=20",true);//将在google搜索"hello",并翻到第3页,并用新窗口打开。

redirect("http://www.xxx.com/listpage.asp","page="+parseInt(request("page"))+1);//翻页功能中的“下一页”。

*/

functionredirect(){

if(arguments.length==0){

return;

}

if(arguments.length==1){

location.href=arguments[0];

return;

}elseif(arguments.length==2&&typeof(arguments[1])=="boolean"){

(arguments[1]==true)?window.open(arguments[0]):location.href=arguments[0];

return;

}else{

varparaObj={};

if(arguments[0].indexOf("?")!=-1){

varcurUrlParas=arguments[0].substring(arguments[0].indexOf("?")+1,arguments[0].length).split("&");

for(i=0;j=curUrlParas[i];i++){

paraObj[j.substring(0,j.indexOf("=")).toLowerCase()]=j.substring(j.indexOf("=")+1,j.length);

}

}

varj=arguments.length;

for(i=1;iif(typeof(arguments[i])=="boolean"){

break;

}

paraObj[arguments[i].substring(0,arguments[i].indexOf("=")).toLowerCase()]=arguments[i].substring(arguments[i].indexOf("=")+1,arguments[i].length);

}

varnewURL="";

for(keyinparaObj){

newURL+=key+"="+paraObj[key]+"&";

}

if(arguments[0].indexOf("?")!=-1){

newURL=arguments[0].substring(0,arguments[0].indexOf("?")+1)+newURL.substring(0,newURL.length-1);

}else{

newURL=arguments[0]+"?"+newURL.substring(0,newURL.length-1);

}

if(typeof(arguments[length-1])=="boolean"&&arguments[length-1]==true){

window.open(newURL);

}else{

location.href=newURL;

}

return;

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类