代码改变世界

注册事件和注销事件

  边缘er  阅读(428)  评论(0编辑  收藏  举报

这2个方法有很多种版本,可以列为常用js方法的前几位。这里所给出的添加事件和注销事件方法是从高级程序设计上拔下来的。这个添加事件方法有暇疵(后面有解决的方法):this指向问题(attachEvent方法中this指向window而不是element);另外在一个element上注册多个相同事件(比如多个click),DOM方法不能保证其顺序,而ie attachEvent按反顺序执行(解决办法是只写一个监听,在此方法中顺序调用其他方法)。

注册事件:

复制代码
function addHandler(element, type, handler){
if(element.addEventListener){
element.addEventListener(type, handler, false);
}else if(element.attachEvent){
element.attachEvent('on'+type, handler);
}else{
element["on"+type] = handler;
}
}
复制代码

注销事件:

复制代码
function removeHandler(element, type, handler){
if(element.removeEventListener){
element.removeEventListener(type, handler, false);
}else if(element.detachEvent){
element.detachEvent('on'+type, handler);
}else{
element['on'+type] = null;
}
}
复制代码

DOM高级程序设计中的方法解决了上面提到的问题,

复制代码
function addEvent(obj, type, fn){
if (obj.attachEvent){
obj['e'+type+fn] = fn;
obj[type+fn] = function(){obj['e'+type+fn](window.event);}
obj.attachEvent('on'+type, obj[type+fn]);
}else{
obj.addEventListener(type, fn, false);
}
}
复制代码
努力加载评论中...
点击右上角即可分享
微信分享提示