打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
js 真的addeventHandler
  1. <PRE class=jscript name="code">//定义 EventUtil 对象  
  2. var EventUtil = new Object;  
  3.   
  4.   
  5. //添加事件处理  
  6. EventUtil.addEventHandler = function (oTarget, sEventType, fnHandler){  
  7.     if(oTarget.addEventListener) {//firefox  
  8.         oTarget.addEventListener(sEventType, fnHandler, false);  
  9.     } else if(oTarget.attachEvent) {//IE  
  10.         oTarget.attachEvent("on"+sEventType, fnHandler);  
  11.     } else {//others  
  12.         oTarget["on" + sEventType] = fnHandler;  
  13.     }  
  14. };  
  15.   
  16.   
  17. //删除事件处理  
  18. EventUtil.removeEventHandler = function (oTarget, sEventType, fnHandler){  
  19.     if(oTarget.removeEventListener) {//firefox  
  20.         oTarget.removeEventListener(sEventType, fnHandler, false);  
  21.     } else if(oTarget.detachEvent) {//IE  
  22.         oTarget.detachEvent("on"+sEventType, fnHandler);  
  23.     } else {//others  
  24.         oTarget["on" + sEventType] = null;  
  25.     }  
  26. };  
  27.   
  28.   
  29. //事件格式化,将IE下的对象尽可能的调整为DOM的事件模型  
  30. EventUtil.formatEvent = function(oEvent){  
  31.     var isIE = Validate_Browser("ie");  
  32.     var isWin= Validate_System("win");  
  33.       
  34.     if(isIE && isWin){  
  35.         oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keycode : 0;  
  36.         oEvent.eventPhase = 2;  
  37.         oEvent.isChar = (oEvent.charCode > 0);  
  38.         oEvent.pageX = oEvent.clientX + document.body.scrollLeft;  
  39.         oEvent.pageY = oEvent.clientY + document.body.scrollTop;  
  40.           
  41.         oEvent.preventDefault = function(){  
  42.             this.returnValue = false;  
  43.         };  
  44.           
  45.         if(oEvent.type == "mouseout"){  
  46.             oEvent.relatedTarget = oEvent.toElement;  
  47.         } else if (oEvent.Type == "mouseover") {  
  48.             oEvent.relatedTarget = oEvent.fromElement;  
  49.         }  
  50.           
  51.         oEvent.stopPropagation = function(){  
  52.             this.cancelBubble = true;  
  53.         };  
  54.           
  55.         oEvent.target = oEvent.srcElement;  
  56.         oEvent.time = (new Date()).getTime();  
  57.     }  
  58.     return oEvent;  
  59. };  
  60.   
  61.   
  62. //获得事件对象  
  63. EventUtil.getEvent = function (){  
  64.     if(window.event){  
  65.         return this.formatEvent(window.event);  
  66.     } else {  
  67.         return EventUtil.getEvent.caller.arguments[0];  
  68.     }  
  69. };  
  70.   
  71.   
  72. //加载窗体的同时,给对象附加事件处理函数  
  73. EventUtil.addEventHandler(window, "load"function(){  
  74.     var oDiv = document.getElementById("divObj");  
  75.     var oDivDel = document.getElementById("divDel");  
  76.       
  77.     EventUtil.addEventHandler(oDiv, "mouseover", handleEvent);  
  78.     EventUtil.addEventHandler(oDiv, "mouseout", handleEvent);  
  79.     EventUtil.addEventHandler(oDiv, "mousedown", handleEvent);  
  80.     EventUtil.addEventHandler(oDiv, "mouseup", handleEvent);  
  81.     EventUtil.addEventHandler(oDiv, "click", handleEvent);  
  82.     EventUtil.addEventHandler(oDiv, "dblclick", handleEvent);  
  83.     EventUtil.addEventHandler(oDivDel, "click", RemoveEvent);  
  84. });  
  85.   
  86.   
  87. function RemoveEvent (){  
  88.     var oDiv = document.getElementById("divObj");  
  89.     var oDivDel = document.getElementById("divDel");  
  90.       
  91.     EventUtil.removeEventHandler(oDiv, "mouseover", handleEvent);  
  92.     EventUtil.removeEventHandler(oDiv, "mouseout", handleEvent);  
  93.     EventUtil.removeEventHandler(oDiv, "mousedown", handleEvent);  
  94.     EventUtil.removeEventHandler(oDiv, "mouseup", handleEvent);  
  95.     EventUtil.removeEventHandler(oDiv, "click", handleEvent);  
  96.     EventUtil.removeEventHandler(oDiv, "dblclick", handleEvent);  
  97.     EventUtil.removeEventHandler(oDivDel, "click", RemoveEvent);  
  98.     var oTextMsg = document.getElementById("oTextMsg");     </PRE>  
  99. <PRE class=jscript name="code">   oTextMsg.value = "附加事件已经清除";</PRE>  
  100. <PRE class=jscript name="code">}  
  101.   
  102. function handleEvent(){  
  103.     try{  
  104.         var oEvent = EventUtil.getEvent();  
  105.         var oTextMsg = document.getElementById("oTextMsg");  
  106.         oTextMsg.value = "";  
  107.         oTextMsg.value += "/n>" + oEvent.type;  
  108.         oTextMsg.value += "/n       target is " + oEvent.target.tagName;  
  109.           
  110.         if(oEvent.relatedTarget) {  
  111.             oTextMsg.value += "/n       relatedTarget is " + oEvent.relatedTarget.tagName;  
  112.         }  
  113.     } catch(e) {  
  114.         alert(e.toString());  
  115.         //这个异常,等待解决  
  116.     }  
  117. }</PRE>  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JavaScript学习笔记——事件
javascript事件模型框架
JavaScript 自定义多级联动浮动菜单
从零开始学习jQuery (五) 事件与事件对象
可拖动模块,文字伸缩、框架伸缩例子
dwr实现GoogleSuggest 修改bug版
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服