Jsローラー事件

3242 ワード

マウスホイール
  • IE/Chrome:onmousew
  • イベント:wheelDeltaデジタルタイプ
  • ローラーを上に上げると、120
  • です.
  • ローラーが下に行くと-120
  • です.
  • 標準以下のevent.detailは常に0であり、非標準IEのevent.detailはundefined
  • である.
  • ff:DOMMouseScurollは、バインディング
  • を達成するために、addEvent Listenerを使用しなければならない.
  • evnet.detailローラーが上に行くと、-3ローラーが下に行くということです.つまり、3
  • です.
  • return falseが阻止するのは、obj.onイベント名=fnによってトリガされるデフォルト動作であり、addEventListenerバインディング挙動
  • を阻止できない.
  • addEvent Listenerで紐付けされたイベントは、イベントの下のpreventDefault()によってデフォルト挙動を阻止する必要がある
  • .
  • IEの下でatachEventで紐付けすれば、やはりreturn falseでデフォルトイベント
  • を阻止することができます.
  • つまり、デフォルトの行動を禁止するのはイベントではなく、イベントをバインディングする形です.
    
    
    
        
             
        
        
            /*
                   
             */
            window.onload = function() {
                var oDiv = document.getElementById('div1');
                /*
                 ie/chrome : onmousewheel
                 event.wheelDelta
                  :120
                  :-120
    
                 firefox : DOMMouseScroll    addEventListener
                 event.detail
                  :-3
                  :3
    
                 return false      obj.on    =fn         
                 addEventListener         event   preventDefault();
                 */
                oDiv.onmousewheel = fn;
    
                if (oDiv.addEventListener) {
                    oDiv.addEventListener('DOMMouseScroll', fn, false);
                }
                
                function fn(ev) {
                    var ev = ev || event;
                    
                    var b = true;
    
                    if (ev.wheelDelta) {
                        b = ev.wheelDelta > 0 ? true : false;
                    } else {
                        b = ev.detail < 0 ? true : false;
                    }
                    
                    if ( b ) {
                        this.style.height = this.offsetHeight - 10 + 'px';
                    } else {
                        this.style.height = this.offsetHeight + 10 + 'px';
                    }
    
                    if (ev.preventDefault) {
                        ev.preventDefault();
                    }
                    return false;
                }
            }
        
    
    
    
    

    封装成插件

    
        /*
               
         */
        mousewheel(document.getElementById("div1"),function(){console.log("   ")},function(){console.log("   ")});
        function mousewheel(obj,downfn,upfn)
        {
            obj.onmousewheel = fn;
            if (obj.addEventListener) {
                obj.addEventListener('DOMMouseScroll', fn, false);
            }
            function fn(ev) {
                var ev = ev || event;
                var b = true;
                if (ev.wheelDelta) {
                    b = ev.wheelDelta > 0 ? true : false;
                } else {
                    b = ev.detail < 0 ? true : false;
                }
                if(b) {
                    upfn&&upfn();
                } else {
                    downfn&&downfn();
                }
                if (ev.preventDefault) {
                    ev.preventDefault();
                }
                return false;
            }
        }