addEventListener兼容性问题
FF和Chrome只支持addEventListener
addEventListener(click,fn,false);(true是捕获/false事件冒泡)
移除:removeEventListener
ie只支持attachEvent
attachEvent(onclick,fn);/移除:detachEvent
问题:attachEvent的this指向是window(用call),IE后绑定的事件先调用,顺序有问题
解决方法:
函数封装:
function addEvent(obj,ev,fn) //obj为要绑定事件的元素,ev为要绑定的事件,fn为绑定事件的函数
{
if(obj.addEventListener){
obj.addEventListener(ev,fn,false);
}else if(obj.attachEvent){
obj[ev+fn] = function(){
fn.call(obj);
}
obj.attachEvent("on" + ev,obj[ev+fn]);
}else {
obj['on'+type]=fn;
}}
function removeEvent(obj,ev,fn)
{
if(obj.removeEventListener){
obj.removeEventListener(ev,fn);
}else if(obj.detachEvent){
obj.detachEvent("on" + ev, obj[ev+fn]);
}
}else {
obj['on'+type]=null;
}}