您好,欢迎访问一九零五行业门户网

用JavaScript 处理 URL 的两个函数代码_javascript技巧

function request(paras){ //获取 url 的参数值,不区分大小写,如无此参数,返回空字符串.
var url = location.href;
var parastring = url.substring(url.indexof(?)+1,url.length).split(&);
var paraobj = {}
for (i=0; j=parastring[i]; i++){
paraobj[j.substring(0,j.indexof(=)).tolowercase()] = j.substring(j.indexof(=)+1,j.length);
}
var returnvalue = paraobj[paras.tolowercase()];
if(typeof(returnvalue)==undefined){
return ;
}else{
return returnvalue;
}
}
function redirect(){ //第一个参数是当前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{ 
var paraobj = {};
if (arguments[0].indexof(?)!=-1){
var cururlparas = 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);
}
var newurl= ;
for (key in paraobj){
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参数表(hash table),函数的第二个及以后的参数都是添加到该hash table中,最后把该表序列化为目的url。
刚发完日志,就想到可以再改进一下,增加一个参数,决定是否用新窗口打开目的url。
/*
第一个参数是当前url,如 http://localhost/demo.asp?xxx=zzz,
第二个及以后的参数形式必须为 xxx=yyy, mm=bbbbb 
最终跳转url为 http://localhost/demo.asp?xxx=yyy&aaa=bbb
*/
function redirect(){
if (arguments.length==0){
return;
}
if (arguments.length==1){
location.href = arguments[0];
return;
}else if(arguments.length==2){
(arguments[1]==true)?window.open(arguments[0]):location.href = arguments[0];
return;
}else{
var paraobj = {};
if (arguments[0].indexof(?)!=-1){
var cururlparas = 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);
}
var newurl= ;
for (key in paraobj){
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;
}
}
根据昨天临下班前的想法,再修改一下,把第二个参数放到最后面去。
/*
use age:
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); //翻页功能中的“下一页”。
*/
function redirect(){
if (arguments.length==0){
return;
}
if (arguments.length==1){
location.href = arguments[0];
return;
}else if(arguments.length==2 && typeof(arguments[1])==boolean){
(arguments[1]==true)?window.open(arguments[0]):location.href = arguments[0];
return;
}else{
var paraobj = {};
if (arguments[0].indexof(?)!=-1){
var cururlparas = 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);
}
}
var j = arguments.length;
for (i=1; i if (typeof(arguments[i])==boolean){
break;
}
paraobj[arguments[i].substring(0,arguments[i].indexof(=)).tolowercase()] = arguments[i].substring(arguments[i].indexof(=)+1,arguments[i].length);
}
var newurl= ;
for (key in paraobj){
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;
}
}
其它类似信息

推荐信息