使用javascript的“委托”实现attachEvent
2007-05-01 19:38
459 查看
使用javascript的“委托”实现attachEvent
上次介绍过使用js来实现委托的特性,今天说一下使用委托实现一些有用的功能。例如实现类似ie dom对象的其中一个方法:attachEvent
attachEvent这个方法是用来绑定对象事件,在大量使用互交时的中经常会用到这个方法,不过在ie和firefox是使用不同的方法来实现,我们可以使用委托来重写这个方法:
/** * function: 用委托的思想实现对象的事件绑定 * author: 天边一只雁 * blog: http://harrychen66.cnblogs.com/ */ // 实现委托的类 function delegate(func){ this.arr = new Array(); // 回调函数数组 this.add = function(func){ this.arr[this.arr.length] = func; }; this.run = function(){ for(var i=0;i<this.arr.length;i++){ var func = this.arr[i]; if(typeof func == "function"){ func(); // 遍历所有方法以及调用 } } } this.add(func); } // 新建一个实现attach event的函数 function fAttachEvent(obj,sEvent,func){ if(!obj.dEv) obj.dEv = new delegate(); obj.dEv.add(func); eval("obj." + sEvent + " = function(){this.dEv.run()}"); } // 建立一个button var btn = document.createElement("BUTTON"); btn.value = "action"; // 绑定函数1 var renderButton = function(){ document.body.appendChild(btn); }; // 绑定函数2 var action1 = function(){ alert("action1"); }; // 绑定函数3 var action2 = function(){ alert("action2"); }; // 绑定函数1到window对象的onload事件 fAttachEvent(window, "onload", renderButton); // 绑定函数2到btn对象的onclick事件 fAttachEvent(btn, "onclick", action1); // 绑定函数3到btn对象的onclick事件 fAttachEvent(btn, "onclick", action2);
相关文章推荐
- 使用javascript的“委托”实现attachEvent
- C# 使用委托实现异步编程的四种方式
- IOS中 使用JavaScriptCore 实现OC与JS的交互
- 使用纯前端JavaScript 实现Excel IO
- JavaScript中使用webuploader实现上传视频功能(demo)
- IOS中 使用JavaScriptCore 实现OC与JS的交互
- dojo的connect方法使用与源代码剖析(在JavaScript里实现类似AOP的效果)
- 使用原生javascript实现瀑布流
- 使用JavaScript 实现对象 匀速/变速运动的方法
- ASP.NET中使用JavaScript实现图片自动水平滚动效果
- JavaScript不使用prototype和new实现继承机制
- 使用JAVASCRIPT实现弹出框,过一段时间自动消失
- 使用JavaScript+canvas实现图片裁剪
- 浅析Javascript中bind()方法的使用与实现
- 使用JAVASCRIPT实现弹出框,过一段时间自动消失
- JavaScript在form表单中使用button按钮实现submit提交方法
- javascript使用web proxy来实现ajax cross-domain通信
- 如何使用PHP实现javascript的escape和unescape函数
- JavaScript使用HTML5的window.postMessage实现跨域通信例子