var eventUtil = new Object;

eventUtil.addEventHandler = function(target, eventType, handler) ...{
if (target.addEventListener) ...{
target.addEventListener(eventType, handler, false);
} else if (target.attachEvent) ...{
target.attachEvent("on" + eventType, handler);
} else ...{
target["on" + eventType] = handler;
}
};

eventUtil.removeEventHandler = function(target, eventType, handler) ...{
if (target.removeEventListener) ...{
target.removeEventListener(eventType, handler);
} else if (target.detachEvent) ...{
target.detachEvent("on" + eventType, handler); 
} else ...{
target["on" + eventType] = null;
}
};

eventUtil.formatEvent = function(evt) ...{
if (isIE && isWin) ...{
evt.charCode = (evt.type == "keypress") ? evt.keyCode : 0;
evt.eventPhase = 2;
evt.isChar = (evt.charCode > 0);
evt.pageX = evt.clientX + document.body.scrollLeft;
evt.pageY = evt.clientY + document.body.scrollTop;
evt.preventDefault = function() ...{
this.returnvalue = false;
};

if (evt.type == "mouseout") ...{
evt.relatedTarget = evt.toElement;
} else if (evt.type == "mouseover") ...{
evt.relatedTarget = evt.fromElement;
}

evt.stopPropagation = function() ...{
this.cancelBubble = true;
};
evt.target = evt.srcElement;
evt.time = (new Date()).getTime();
}
return evt;
};

eventUtil.getEvent = function() ...{
if (window.event) ...{
return this.formatEvent(window.event);
} else ...{
return EventUtil.getEvent.caller.arguments[0];
}
};

本文介绍了一种跨浏览器兼容的事件处理方法,通过封装统一的事件添加和移除函数,实现不同浏览器间的事件监听器的标准化调用。同时,还提供了一个格式化事件对象的函数,确保事件属性的一致性。
5849

被折叠的 条评论
为什么被折叠?



