Javascriptのイベントライブラリのパッケージ

1797 ワード

ブラウザでは、イベントの操作に対して、互換性は主にDOM2レベルのイベントが存在し、標準ブラウザはaddEventListener()およびremoveEventListener()を介してイベントおよびバインディングイベントを登録し、下位バージョンのIE には対応するattachEvent()およびdetachEvent()がある.さらに、中に入ってきたイベント行為は、標準的なものはonを持たず、IEonを有する.次に、イベント処理関数内のthisが問題点を指す.低バージョンのブラウザはwindowを指し、標準ブラウザは を指す.イベントの重複バインディングの問題:低いバージョンのブラウザは繰り返しバインディングを実行します.標準ブラウザは一回だけバインディングを繰り返します.イベントバインディング順序と実行順序の問題:低いバージョンのブラウザはバインディングの順序で実行されず、標準ブラウザはバインディングの順序で実行される.
解決策の核心
行列
  • は自分のイベントプールを作って、行列の中に入れます.
  • 自分のイベントプール関数をシステムに結びつけ、自分のイベントプールがイベントを削除すると、対応するシステムがイベント
  • を削除します.
    //        ,    ,      
    function on(ele,type,fn){
        //      
        if(ele.addEventListener){
             ele.addEventListener(type,fn,false);//   
         }else{ // IE6-8
             if(!ele['on'+type]){  //    ele               
                 ele['on'+type]=[];
                 //  run        
                 ele.attachEvent('on'+type,function(){
                      run.call(ele); //              run     this  ele
                  })
               }
           
              //     ,         
              for(var i=0;i