由于浏览器的差异。事件中的一些处理不得不出现大量这样类似的代码 var event = event?event:window.event;
这当然不是我们想要的,于是需要把常见的事件处理封装起来,便于我们方便地使用。
javascript 高级程序设计中封装代码如下:
var EventUtil = {
/* 添加时间处理程序 */
addHandler : function(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;
}
},
/* 获取event对象的引用 */
getEvent: function(event){
return event? event : window.event;
},
/* 获取事件的目标 */
getTarget:function(event){
return event.target || event.srcElement;
},
/* 取消事件的默认函数 */
preventDefault:function(event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue = false;
}
},
/* 移除时间处理程序 */
removeHandler : function(){
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent("on"+type,handler);
}else{
element["on"+type] = null;
}
},
/* 阻止事件流继续传播 */
stopPropagation : function(event){
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble = true;
}
},
/* 获取相关元素 */
getRelatedTarget : function(event){
if(event.relatedTarget){
return event.relatedTarget;
}else if(event.toElement){
return event.toElement;
}else if(event.fromElement){
return event.fromElement;
}else{
return null;
}
},
/*获取按键编码*/
getCharCode : function(event){
return (typeof event.charCode == "number")?event.charCode:event.keyCode;
},
//获取剪切板数据
getClipboardText:function(event){
var clipboardData = window.clipboardData || event.clipboardData;
return clipboardData.getData("text");
}
};