Eventutil関数パッケージ

8392 ワード


EventUtilとは何ですか?
JavaScriptでは、DOM 0級、DOM 2級と旧バージョンIE(8-)を対象にイベントを追加する方法が異なります.
ブラウザをまたいでイベントを処理するためには、ブラウザをまたぐイベントハンドラである「共通コード」を作成する必要があります.
習慣上、この方法はEventUtilという対象になります.
このオブジェクトを作成して使用すると、イベントを処理するコードがほとんどのブラウザで一致して実行できるようになります.
var EventUtil={
    
   addHandler:function(element,type,handler){ //    
      if(element.addEventListener){ 
         element.addEventListener(type,handler,false);  //  DOM2       
      }else if(element.attachEvent){                    //  IE      
         element.attachEvent("on"+type,handler);
      }else{
         element["on"+type]=handler;          //  DOM0       
      }
   },  

   removeHandler:function(element,type,handler){  //    
      if(element.removeEventListener){
         element.removeEventListener(type,handler,false);
      }else if(element.detachEvent){
         element.detachEvent("on"+type,handler);
      }else{
         element["on"+type]=null;
      }
   },

   getEvent:function(event){  //            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;
      }
   },

   stopPropagation:function(event){  //       DOM    
                                     //       document.body         
      if(event.stopPropagation){
         event.stopPropagation();
      }else{
         event.cancelBubble=true;
      }
   },
        
   getRelatedTarget:function(event){  //  mouseover mouseout    
      if(event.relatedTarget){
         return event.relatedTarget;
      }else if(event.toElement){      //  IE8-
         return event.toElement;
      }else if(event.formElement){
         return event.formElement;
      }else{
         return null;
      }
   },
        
   getButton:function(event){    //  mousedown mouseup                
      if(document.implementation.hasFeature("MouseEvents","2.0")){
         return event.button;
      }else{
         switch(event.button){   // IE    button     DOM    button  
            case 0:
            case 1:
            case 3:
            case 5:
            case 7:
               return 0;  //         (     )
            case 2:
            case 6:
               return 2;  //           
            case 4:
               return 1;  //     (     )
         }
      }
   },
        
   getWheelDelta:function(event){ //               
      if(event.wheelDelta){
         return event.wheelDelta;
      }else{
         return -event.detail*40;
      }
   },
        
   getCharCode:function(event){   //              ,  keypress     
      if(typeof event.charCode=="number"){
         return event.charCode;
      }else{
         return event.keyCode;
      }
   }
        
};
 
 
転載先:https://www.cnblogs.com/yzhweb/p/7516189.html