事件绑定兼容处理封装,由于.attrachEvent()方法中,this指向window,需要作如下处理:
function addEvent(node,type,handler){
if(!node) return false;
if(node.addEventListener){
node.addEventListener(type,handler,false);
return true;
}
if(node.attrachEvent){
node['e'+type+handler]=handler;
node[type+handler]=function(){
node['e'+type+handler]=handler(window.event);
}
node.attrachEvent("on"+type,node[type+handler]);
return true;
}
return false;
}
解除事件绑定,在使用了上面的兼容绑定方法后,可使用下面的封装:
function removeEvent(node,type,handler){
if(!node) return false;
if(node.removeEventListener){
node.removeEventListener(type,handler,false);
return true;
}
if(node.detachEvent){
node.detachEvent("on"+type,node[type+handler]);
node[type+handler]=null;
return true;
}
return false;
}
获取事件:
function getEvent(e){
return e||window.event;
}
阻止事件冒泡:
function stopPropagation(e){
if(e.stopPropagation){
e.stopPropagation();
}else{
e.cancelBubble=true;
}
}
阻止默认事件
function preventDefault(){
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue=true;
}
}
目标对象:
function target(){
return e.target||e.srcElement;
}