JavaScript事件のいくつかの互換性のある書き方

1597 ワード

バインディングイベント
  • addEventListener:W 3 C標準書き方IEは互換性がない
  • atachEvent:互換IEの違い:1、イベント名は違っています.IEに「on」を追加するには、W 3 Cは2を追加しないでください.ロードイベントの実行順序は違っています.W 3 Cはバインディングイベントの順序で実行されます.一方、IE 6、7は、バインディング時間の最初に3、thisの指向、W 3 Cは、バインディング関数のthis DOMオブジェクトを指します.
    イベントを削除
      var addEvent = function( obj, type, fn ) {
        if (obj.addEventListener)
          obj.addEventListener( type, fn, false );
        else if (obj.attachEvent) {
          obj["e"+type+fn] = fn;
          obj.attachEvent( "on"+type, function() {
            obj["e"+type+fn]();
          } );
        }
      };
    
    イベントとスクリプトを読み込み
        var removeEvent = function(obj, type, fn) {
            if (obj.removeEventListener)
                obj.removeEventListener( type, fn, false );
            else if (obj.detachEvent) {
              obj.detachEvent( "on"+type, obj["e"+type+fn] );
              obj["e"+type+fn] = null;
            }
        }
    
    事件を阻止する
        var loadEvent = function(func) {
            var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = func;
        }else {
            window.onload = function() {
                oldonload();
                func();
              }
          }
        }  
    
    イベントソースの取得
    Prottype.jsフレームに相当するEvent.element(e)
        var cancelEvent = function(event) {
          event = event||window.event
        if (event.preventDefault) {
            event.preventDefault(  );
            event.stopPropagation(  );
        } else {
            event.returnValue = false;
            event.cancelBubble = true;
        }
    }