首页 > IT职业 > IT生活 > 事件处理程序-跨浏览器
事件处理程序:其实就是dom节点的用户操作动作,例如onclick、onmouseover、onblur等。
事件处理程序有三种方式:
1、HTML方式,直接在html的dom节点上面添加事件属性。
例如:.
这种方式用的较少,因为有两个缺点:A、事件与html的文档结构耦合比较高,增加了维护的工作量;B、不能为一个事件添加多个处理函数
2、DOM0级事件处理程序:这种方式用的比较多。
例如:
添加事件:nodeObject.onclick=function(){};
删除事件:nodeObject.onclick=null;
3、DOM2级事件处理程序:这种方式存在浏览器兼容性问题
IE中写法:
添加事件:nodeObject.attachEvent("onclick",function(){xxx});
移除事件:nodeObject.detachEvent("onclick",function(){xxx});
其他浏览器写法:
添加事件:nodeObject.addEventListener('click',function(){},false);
移除事件:nodeObject.removeEventListener('click',function(){},false);
对于事件处理程序我们一般建议自己进行封装,兼容跨浏览器的问题。
var eventUtil = {
addEventHandle:function(element,eventType,fn){//添加事件,这里eventType最好传递不带“on”的,便于后面拼接on
if(element.addEventListener){//非IE情况下,使用addEventListener
element.addEventListener(eventType,fn,false);
}else if(element.attachEvent){//IE情况下,使用attachEvent
element.attachEvent('on'+eventType,fn);
}else{//不支持DOM2级情况下,使用DOM0级的方式
element['on'+eventType] = fn;
}
},
removeEventHandle:function(element,eventType,fn){//添加事件,这里eventType最好传递不带“on”的,便于后面拼接on
if(element.removeEventListener){//非IE情况下,使用removeEventListener
element.removeEventListener(eventType,fn,false);
}else if(element.detachEvent){//IE情况下,使用detachEvent
element.detachEvent('on'+eventType,fn);
}else{//不支持DOM2级情况下,使用DOM0级的方式
element['on'+eventType] = null;
}
}
};
详见代码:
事件处理跨浏览器
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/813/viewspace-2798466/ ,如需转载,请注明出处,否则将追究法律责任。