varobj=newObject();
obj.triggerOnce=function(fn){//控制让函数只触发一次
returnfunction(){
try{
fn.apply(this,arguments);
}
catch(e){
vartxt="Therewasanerroronthispage.\n\n";
txt+="Errormessage:"+e.message+"\n\n";
txt+="Errorname:"+e.name+"\n\n";
//alert(txt);//正式平台上可能需要注释掉该行
}
finally{
fn=null;
}
}
}
调用形式:
functionshowMsg(arg){
alert(arg);
}
varfn=obj.triggerOnce(showMsg);
fn(1);//只执行一次
fn(2);//没有调用fn
最后,关于javascript的apply方法,您可以简单参考这篇旧文。
【外一篇】用javascript取得querystring的值
在常见的网站中,经常碰到有“XXXX.aspx?username=jeffwong&address=北京” 这种形式的url,通过asp.net的Request对象获取键值轻而易举,通过js也不是很难,用下面的函数就可以搞定了:
代码
varurlStrs=location.search;//QueryString
varRequest={};
Request.Count=0;
Request.Add=function(name,value){
if(Request.hasOwnProperty(name)==false){
Request.Count++;//如果不存在,计数添加1
}
Request[name]=value;
returntrue;
}
Request.QueryString=function(name){//取对应的键值
varkey=name.toString().toLocaleLowerCase();//不区分大小写
varresult=null;
try{
//if(Request.hasOwnProperty(key)){
result=Request[key];
//}
}
catch(e){
//alert(e.message);
}
returnresult;
}
Request.Init=function(urlQueryString){
if(urlQueryString.indexOf("?")!=-1){
varurl=urlQueryString.substr(1)
varstrArr=url.split("&");
for(vari=0;i<strArr.length;i++){
varstrChildArr=strArr[i].split("=");
varname=String(strChildArr[0]).toLowerCase();
varvalue=unescape(strChildArr[1]);//unescape解码
this.Add(name,value);//添加
}
}
}
测试函数如下:
代码
//测试函数
functiontest(){
Request.Init(urlStrs);//初始化request
alert(Request.Count);
varname="username";
varvalue=Request.QueryString(name);
alert(Request[name]);
alert(Request.QueryString(name));
name="address"
alert(Request[name]);
alert(Request.QueryString(name));
name="age";
alert(Request[name]);
alert(Request.QueryString(name));
}
需要说明的是,url里的参数通常都会有编码,本文采用的是比较常用的unescape进行解码,实际上,关于url参数编码,通常有escape,encodeURIComponent和encodeURI这三种编码函数,escape是window对象的内置函数,而另外两种则是javascript内置函数,它们解码的函数也是一一对应的关系(您可以参考这一篇),各自对应的反转函数分别是unescape,decodeURIComponent和decodeURI。
优质内容筛选与推荐>>
1、getCurrrentSession和openSession的区别,还有getHiberanteTemplate2、QListWidget加入小控件3、设计模式(六) 桥梁模式4、输入结束快捷键5、典型漏洞归纳之解析漏洞
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
阅读
好看
已推荐到看一看
你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
取消
分享想法到看一看
确定
最多200字,当前共字
微信扫一扫
关注该公众号