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<j; 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;
}
}
分享到:
相关推荐
JavaScript 处理 URL 的两个函数代码 JavaScript 处理 URL 的两个函数代码是指使用 JavaScript 语言来处理 URL 的两个函数代码。在这两个函数代码中,第一个函数代码是 request 函数,用于获取 URL 的参数值;第二...
此外,可能会有一些实用的日期比较函数,如`isSameDay`或`isBeforeDate`,帮助开发者判断两个日期的关系。 除此之外,这个工具库可能还提供了其他实用功能,比如数组操作(如`arrayContains`检查数组是否包含某个值...
这个是 utf-8版本的 js实现 php的 urlencode() 和 urldecode()两个函数的功能。 在传送cookie的时候 在 php端实现 url编码 但要用 js来解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决
这两个函数通常用于处理URL、表单数据等场景。 #### ASP中的实现 在ASP环境中,我们可以使用VBScript编写自定义函数来模拟`escape`和`unescape`的功能。下面分别介绍这两个函数的实现方法: ### 1. vbsEscape函数...
`ShengUtils.decode`函数则用于解码经过`encode`函数处理过的URL字符串。它同样遍历输入字符串`zipStr`的每个字符,遇到`+`替换为空格,遇到`%`开始的序列则执行解码操作。如果`%`后面的16进制数字大于0x7f,说明这...
本文旨在全面介绍JavaScript函数,涵盖数学运算、字符串操作、日期处理、数组管理等多个领域,通过详细解析每个函数的功能与使用场景,帮助开发者提升编程效率与代码质量。 #### 数学函数:精确计算的基石 - **abs...
- 在HTML文件中设置两个按钮,分别对应于两个自定义URL,用于触发对应的VB函数。 ```html ()"> ()"> Sub Hello_OnClick() location.href = "Event:Hello" End Sub Sub Close_OnClick() ...
这两个手册将帮助开发者深入理解这两种语言的核心概念,提高编程效率,解决实际开发中的问题。通过查阅这些手册,你可以快速查找所需功能的实现方法,或者学习新的编程技巧,从而提升自己的技术水平。无论你是初学者...
2. **URL编码**:JavaScript的`encodeURIComponent`函数可以对字符串进行URL编码,但默认它只处理UTF-8编码。为了GBK编码的字符串能正确编码,需要先将GBK编码后的字节序列转换为 `%xx` 形式,这可以通过遍历字节...
这两个函数对于编码和解码URL组件至关重要。本文将详细探讨这两个函数的工作原理、使用场景以及如何在实际开发中正确使用它们。 encodeURIComponent和decodeURIComponent是JavaScript中处理URL编码和解码的重要工具...
在JavaScript编程中,有时我们需要处理URL中的查询字符串(query string),将其转换为可操作的数据结构,...理解这个函数的工作原理以及其与JavaScript对象创建方式的关系,对于进行Web开发的程序员来说是非常重要的。
在Web开发中,经常需要对URL中的查询参数进行解析和构建,而JavaScript提供了两种主要的函数来实现这一功能:parse(解析)和...通过实现这两个函数,可以极大地简化对URL参数的操作,并在实际应用中发挥重要的作用。
这里使用了`map`和`some`这两个数组原型方法,它们都是JavaScript提供的高阶函数。`map`用于创建一个新数组,其结果是调用一个提供的函数对原数组的每个元素所做的处理;`some`则用于测试数组中是否至少有一个元素...
10. **字符串连接**:在JavaScript中,使用`+`号可以连接两个字符串。 11. **比较操作符**:`==`表示等于,`!=`表示不等于,`>`表示大于,`表示小于,`>=`表示大于等于,`表示小于等于。 12. **变量声明**:使用`...
首先,我们有两个主要的函数:`Encrypt` 和 `Decrypt`。`Encrypt` 函数用于加密URL参数,而 `Decrypt` 函数则用于解密已加密的数据。 1. **加密过程**: - 首先,函数检查输入的字符串 `str` 是否为空,如果为空则...
JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责处理客户端的交互和数据管理。在实际项目中,为了提高页面加载速度和优化用户体验,我们常常需要按需加载JavaScript文件,而不是一次性加载所有...
它接受两个参数:`rootTagName` 和 `namespaceURL`。 - **参数**: - `rootTagName`: XML文档根元素的名称,默认为空字符串。 - `namespaceURL`: XML命名空间的URL,默认为空字符串。 - **返回值**:返回一个XML...
寻找两个函数所有不同的元素 寻找两数组所有不同元素 得到文件类型 截取字符串中两个特定唯一字符之间的内容 截取指定长度字符串 折线图 按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换...
文章《用JavaScript实现PHP的urlencode与urldecode函数》就提供了如何在JavaScript中实现这两个函数的方法。 首先,我们来理解urlencode函数的功能和实现原理。urlencode函数的目的是将字符串进行编码,使得该字符...