Mousewheel & dommousescroll event in IE & Edge

前端 未结 3 572
春和景丽
春和景丽 2020-12-10 12:09

I have this code:





Title

&         


        
相关标签:
3条回答
  • 2020-12-10 12:17

    Staring EdgeHTML 17, Microsoft supports Pointer Events to solve the issue.

    https://blogs.windows.com/msedgedev/2017/12/07/better-precision-touchpad-experience-ptp-pointer-events/

    As of today, pointer events are supported by all major browsers except Safari:

    https://caniuse.com/#search=pointer

    0 讨论(0)
  • 2020-12-10 12:18

    Some older IE version doesn't support addEventListener, they support attachEvent instead.

    Try a crossBrowser addEventListener:

    if ( window.attachEvent ) {
     window.attachEvent('on'+eventType, yourHandler); // in your case "scroll"
    } else {
     window.addEventListener ...
    }
    

    Pay attention to the page height: it won't work if there is no offset. If there is no offset in your page, then use this:

    document.attachEvent('onmousewheel', mouseWheelEvent); // the event is attached to document 
    
    0 讨论(0)
  • 2020-12-10 12:22

    Edit

    After some research it seems that the problem is actually Microsoft's.

    There is an open issue about it in EdgeHTML issue tracker for almost one year already.

    Basically it says that wheel events do not work in Edge (And older IE versions) when using Precision Touchpads.

    By the way I dont delete the rest of the answer as it is still relevant. You should use wheel instead anyway.


    You should listen to wheel:

    window.addEventListener('wheel', mouseWheelEvent);
    

    It has replaced both mousewheel and DOMMouseScroll which are deprecated by now and is supported by all browsers.


    Cross browser example:

    window.addEventListener('wheel', mouseWheelEvent);   
    
    function mouseWheelEvent() {
        console.log("Fired");
    }
    <h1>
      Hodor!
    </h1>
    <h1>
      Hodor!
    </h1>
    <h1>
      Hodor!
    </h1>
    <h1>
      Hodor!
    </h1>
    <h1>
      Hodor!
    </h1>
    <h1>
      Hodor!
    </h1>
    <h1>
      Hodor!
    </h1>


    And JSFiddle demo

    0 讨论(0)
提交回复
热议问题