注册事件和注销事件
2012-02-17 17:57 边缘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);
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步