由於瀏覽器的差異。事件中的一些處理不得不出現大量這樣類似的代碼 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");}};