Edge does not fire wheel events when scrolling using the 2-finger scroll gesture on a Precision Touchpad

Issue #7134034 • Assigned to Matt R.

Details

Author
Bryan C.
Created
Apr 6, 2016
Privacy
This issue is public.
Found in
  • Microsoft Edge
  • Internet Explorer
Found in build #
13.10586
Reports
Reported by 38 people

Sign in to watch or report this issue.

Steps to reproduce

To Reproduce:

  1. Use a Win10 device with a precision touchpad (Ex: Surface Pro 3/4/Book) or use a touch-enabled Win10 device with the on-screen touchpad that launched with the Windows 10 Creator’s Update.
  2. Use this jsfiddle: https://jsfiddle.net/0z8mvewo/
  3. Point your mouse cursor over the image and try to scroll using the 2-finger scroll gesture.

Expected Behavior:
The script should capture the “wheel” event (which the Edge Platform Status Page claims is supported), prevent it from scrolling vertically (the event handler calls event.preventDefault()), and instead use the wheel scroll delta to animate the image moving horizontally left or right by the number of pixels the user scrolls with the 2-finger gesture.

Actual Behavior:
Edge does not fire the “wheel” event, and hence the wheel event’s default behavior is not prevented. Instead, Edge just scrolls the page vertically. The script does not execute.

This bug is specific to Edge when using Precision Touchpads (including the new on-screen touchpad):
Edge properly fires wheel events for 2-finger scroll gestures on non-precision touchpads such as modern Synaptics touchpads like on the HP Spectre 360, regular mouse wheels on external mice, and vertical scroll-swipe edge areas on legacy touchpads. The only trackpads that have this issue are PTPs, and the new Windows 10 on-screen Touchpad that launched with the Windows 10 Creators Update.

I know that PTPs are different under the hood, but users do not care. They expect consistent functionality. Edge consistently honors the 2-finger scroll gesture by scrolling the page and firing the “scroll” event. It simply fails to fire the “wheel” event. That creates inconsistent behavior that is confusing to the user who has no idea why their Surface’s touch-pad doesn’t behave the same way as their friend’s HP does.

Interoperability:
Try the same jsfiddle in any other Browser (Chrome, Firefox, Brave, Opera) on the same machine using the same Precision Touchpad. You’ll see that the “wheel” event fires as expected, and the browser properly respects calls to event.preventDefault().

Work-Around:
There is NO WORK AROUND until this is fixed as there isn’t even a proprietary Edge-Only event to hook into to prevent the default behavior.

I Need You to Feel My Pain:
Seeing as 2-finger scrolling has been the standard scroll-wheel gesture for trackpads for close to a decade now, it’s very frustrating that this bug has been ignored for so long (I first reported in the IE days, then again in the Spartan days, and now we’re more than a full year into the Edge days… still no announced plans to fix).

Others Who Are Feeling the Pain:

  • This breaks EVERY web experience that relies on wheel events
  • Web GL Engines & Games like Unity
  • Custom cross-platform touch-scroller shims like iScroll
  • Windows 10 apps built on Edge like Flipboard
  • Windows 10 XAML apps that use EdgeHTML web views and rely on the wheel event to scroll the outer canvas, like the Windows Insider’s Feedback Hub.
  • Wheel-based zooming on Bing Maps or Google Maps
  • And obviously, some of my own products

I know that the PTP is different under the hood… But users don’t care:
As I’ve said, this has been a pain point I’ve been reporting to Edge PMs for years now so I know you know of it. I wanted to file an official bug so that I can track progress, and hopefully convince you it’s worth fixing before you try to create an entirely new standard for precision touchpads (as someone on the Edge team told me they were planning a few years back)… That is a lost cause, and as the past years have shown, will never get off the ground. The thing is, a new standard for precision touchpads is just not something any other platform, or even browser, needs. There is no motivation to create a new standard for it outside of Windows 10 and Edge. Every other browser solved the problem by simply firing the wheel event as expected. Why not just do the same?

Please. And Thank You!

Attachments

0 attachments

    Comments and activity

    • Microsoft Edge Team

      Changed Assigned To to “Rick J.”

    • The platform status page shows this as working. It’s not.

      https://developer.microsoft.com/en-us/microsoft-edge/platform/status/dom3wheelevents

    • I can reproduce it :)

    • Can reproduce!

    • Also able to reproduce; totally destroys scrolling in many web-based text/code editors such as Ace.

    • Sure enough… this breaks ACE too. To verify, just navigate here: https://ace.c9.io/#nav=about and add a bunch of new lines to the code editor until the scroll bar appears. Won’t let you scroll with the precision touchpad.

      This effectively breaks code editing on:

    • This also breaks the new Microsoft CaptionBot.ai site, which lets you scroll through images to try with your mouse wheel… but it doesn’t work in Edge on Surface devices with Precision Touchpads because of this bug.

      To replicate:

      • Browse to the CaptionBot.ai website
      • Point your mouse over the strip of images
      • Try to scroll through them with the 2-finger gesture on a Precision Touchpad
    • Microsoft Edge Team

      Changed Assigned To from “Rick J.” to “Ibrahim O.”

      Changed Assigned To to “Rick J.”

    • Also doesn’t work on a single page scroll plugin like http://alvarotrigo.com/fullPage/

    • Microsoft Edge Team

      Changed Assigned To to “Sermet I.”

      Changed Assigned To from “Sermet I.” to “Andrew B.”

      Changed Assigned To from “Andrew B.” to “Matt R.”

    • This is still broken in the new Edge Build in Win10 14332.

    • This is still broken in the new Edge Build in Win10 14342.

    • So the behavior seems to be starting to change in Build 14352!

      It now seems to fire the wheel event… But ONLY if I scroll UP with a quick 2-finger swipe, and only AFTER I’ve released and the momentum from my swipe takes over… The fired event however ignores the event.preventDefault(); and event.stopPropagation(); calls, resulting in the page’s normal scroll behavior still happening.

      Soo… very happy to see some progress! Hoping this wasn’t an accident but is a sign that a true fix is in the works. Would love to see confirmation from one of you lovely Edge Engineers on this issue.

    • Still broken in 14361

    • Seeing some new progress in 14366. Now if the main scroll bar is at its limit, the wheel event fires… However it still ignores event.preventDefault(), resulting in the main window scroll bar handling scroll when ever it isn’t at the end of the direction you’re scrolling in.

    • A little regression in build 14376. I can still get the wheel event to fire, but only if I swipe 2 fingers to scroll very quickly again and again and again when at the upper edge of the window’s scroll bar. Still ignores event.preventDefault.

      Still hoping a fix for this can make it into the anniversary update 🤞🤞

    • Seconding that sentiment, for what it’s worth.

    • 14388 brings us back to the way it was working in 14366. Seems we just need it to be able to fire the event even if the outer page is not at the scroll limit, and to properly respect event.preventDefault(). Still crossing my fingers for a fix by 8/2!

    • No changes in 14390 and 14393 it seems. 2 weeks & a day 'till launch. I’ve got a case of beer with your name on it if you can fix this before the 1607 launch, Matt!

    • Damn… 14393.5 (the RS1 “Anniversary Update” RTM?) still doesn’t handle precision touchpads like any other touchpad. Would love to see a fix for this make it out in a patch before RS2.

    • Still a problem in 14393.51

    • Still a problem in 14393.82

    • lol, no wonder most have moved on to browsers that just work. Seriously Microsoft? This is core functionality.

    • Still a problem in 14393.105. Too bad so many sites are broken on Microsoft’s own hardware and software as a result of this bug, seeing as all Surfaces released in the past 3 years shipped with precision touchpads. Too bad Microsoft continues to deprioritize this issue even though every single other browser has solved it.

      At least now that Chrome 53 fixed all the battery and performance issues Chrome had, users have a great alternative while MS continues to ignore this critical bug.

    • What is your ETA?

    • Same problem in 1493.187.

    • Also posted to the user voice page where it’s now the 2nd hottest item on the list. Please please please just fix this!

      https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/15951508-support-wheel-events-for-2-finger-scrolling-on-p

    • Threw my 3 votes at that. I’d vote every point I have if I could. I’d really love to use Edge as a primary browser but given that it doesn’t work with so many modern usecases that involve scrolling, I’m stuck opening a second browser and optimizing my products for other them instead. The fact that we got an extension system before we got functional scrolling is a bit baffling.

    • Microsoft Edge Team

      Changed Title from “Edge does not fire wheel events when scrolling using the 2-finger scroll gesture on a Precision Touchpad” to “Edge does not fire wheel events when scrolling using the 2-finger scroll gesture on a Precision Touchpad”

    • Updating title since the comments have pushed the info regarding it impacting surfacebook and other precision touchpads down a bit.

    • Looks like this bug may also be breaking scrolling in the “Announcements” section of the Windows 10 Feedback Hub… assuming this app was built with HTML/CSS. Scrolling with a mouse wheel works fine when the pointer is over the content of an announcement, but does not work if you use a precision trackpad unless you move your cursor to the far right (where it’s not over the web view that shows the “Announcement” article contents).

    • Still broken in 14971. Blows my mind that you can build new support for Web VR but STILL can’t fire the standard wheel event…

    • Ridiculous that this problem still hasn’t been addressed or acknowledge. It puts a dent on the Microsoft effort for good scrolling on the windows platform. Still hasn’t been fixed on current windows release for Surface Pro 3

    • How can you not have a simple thing like scroll wheel support for trackpads on Edge? I would’ve actually used Edge if scrolling didn’t cause all kinds of havoc through my trackpad.

    • Still broken in 14986. How many years can a feature that’s supposedly supported according to your web platform status page go broken? Nobody at Microsoft cares. That’s clear now. Nobody cares.

    • Absolutely ridiculous. I’d love to tell people that Edge is decent, but I’m definitely not sticking up for a browser that doesn’t scroll correctly on MS’ own flagship laptop. How this issue still exists is completely baffling to me.

    • This is indeed getting ridiculous. What are we supposed to to ? Display a modal telling the user that our web app does not support Edge ? Your problem Microsoft.

    • Ok, Edge PMs… You’ve had years to fix this while it was only affecting Microsoft’s own hardware. Now Lenovo is putting precision touchpads in all their new laptops. Time to get your shit together AND FIX THIS!

      http://www.theverge.com/2016/12/28/14094604/lenovo-thinkpad-enterprise-pc-kaby-lake-windows-hello-usb-c

    • STILL broken in build 15002.

      …And while I can use my mouse wheel to vertically scroll to make the new tab preview slide left and right, the precision trackpad requires me to go side-to-side. Related?

    • Still broken in 15031

    • Still broken in 15048

    • This bug also appears to affect the on-screen touchpad coming in the Creator’s Update (which presumably uses the same internal APIs as the Precision Touchpad). I’ve opened another bug for this one here:

      https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10523255/

    • That’s hilariously awful how a known issue cannot be fixed by Microsoft even in insider builds for 2 years…

    • Whenever a change log comes out and I read through the new features and fixes I have to laugh at the decision-making process knowing that this is still open.

    • Makes you wonder if “Matt R.” still works for MS. Or if MS developers actually use their own products.

    • Hey look… an official Edge Blog post claiming “wheel” event support in Edge. WT actual F:

      https://blogs.windows.com/msedgedev/2017/03/08/scrolling-on-the-web/

    • Still broken in 15061

    • One of these days this bug will not longer drive me insane.

      Because I’ll be dead from old age.

    • Still broken in the Creator’s Update build 15063. Maybe they’ll get a chance to get to this before the next major release at the end of the year? One can hope.

    • Bryan C. I’m on Surface Pro 4 and it definitely has a Precision Touchpad. I dont have any problem in Edge with it, at least on the websites that I use. I never faced this issue. Although, on Feedback Hub app at the Announcements page I cannot scroll opened news with my touchpad.

    • But jsfiddle script seems like to work sometimes only if I scroll up or left/right but when I scroll down it will just scroll the page

    • HI Nikita… To clarify, as you seem to have missed it, the issue is not that it doesn’t scroll (it does), but rather that it doesn’t fire “wheel” events when scrolling (as it’s supposed to… and as every other browser does… and as the platform status page says it does).

      The jsfiddle I wrote demonstrates this by attempting to catch the “wheel” event, prevent the default behavior (scrolling), and animating horizontally instead.

      It works fine on every browser except Edge. It works fine on every Touchpad except for PTPs (like in your Surface Pro 4).

      If you scroll back up to my comment on May 26, 2016 about build 14352, you will see that I noted, as you now did, that sometimes Edge will now fire the wheel event IF you’re at the extremities of the outer scroll box in such a way as to cause edge (or windows?) to simulate the over-scroll momentum “bounce” effect. But even in that case, it still does not honor calls to event.preventDefault().

      I know Microsoft is aware of this bug as I’ve had several (some friendly, some not-so-friendly) conversations with a half dozen different people on the Edge team about it. The line I keep hearing is alwasy "Oh, you’re right… let me check on that", only to have them come back after talking to whoever is in charge of deciding if they’ll ever fix this to tell me that "It’s hard". Or "Precision Touchpads are different under the hood, so they should be treated differently".

      The first excuse I get. If that’s the roadblock, surely the years since I’ve started reporting this have been enough procrastination… especially now that PTPs are getting pretty damn popular, and the Edge team has done a very good job of fixing the crippling performance issues (seriously… the Creator’s Update is night and day in terms of performance. They did a killer job there).

      The second excuse (“we should treat PTPs differently”) is just, I’m sorry, total BS. Users DO NOT CARE that their trackpad is a Precision Touchpad or a Synaptics Touchpad. They just care that it WORKS CONSISTENTLY AS EXPECTED. If you’re going to support the 2-finger scroll gesture (as PTPs do), then you need to make it fire the wheel event like every other trackpad does when scrolling with a 2-finger scroll gesture, and every other browser does. For some unknown reason, there are some very very stubborn Edge PMs (or maybe just one very important PM? who knows) who disagree with this and insist on treating it differently, even after the recent blog post I linked to above detailed how one should properly handle “wheel” events for 2-finger scrolling gestures (in which the author actually said they’re testing using a Surface Book… meaning he MUST have ran into this issue while testing)… So clearly they “GET” that 2-finger scrolling is the same to the user as mouse wheel scrolling. The visual behavior is the same… so much so that you, Nikita, misunderstood this bug and thought it worked fine… But for devs who want to change wheel behavior for any number of reasons (of which I’ve listed many over the past year or so), you simply can’t if your users use Edge. Such a shame.

    • Changed Steps to Reproduce

      Changed Steps to Reproduce

    • Changed Steps to Reproduce

      Changes: When I first filed this bug on the Edge Issues site, it was new and the markdown parser was broken, removing line breaks and merging bullet points together. Now that the markdown parsing has been fixed and the site lets me make edits, I’ve taken the time to better format the steps to reproduce to improve clarity, better note that it affects Edge’s claimed standards compliance, and to (hopefully) better present the case for why this is important to fix sooner rather than later.

    • Changed Steps to Reproduce

    • Happy birthday to this bug (even though the displayed date doesn’t reflect how long it’s really existed). Cheers to the eater-of-productivity and the cause for 90% of my Chrome use!

    • This is very broken. We see swipe and browser zoom (no wheel events). We don’t want either of these in our browser-based app. We’ll leave our nag screen up that Edge is unsupported until this is fixed.

    • Here’s a fiddle with the Edge issues:
      https://jsfiddle.net/alecazam/my6gntrr/

      touch-action also frustratingly doesn’t apply to touch-pad, and pointer events don’t seem to have a method to identify that. Edge has to send down wheel events or we can’t preventDefault. Also the devicePixelRatio conversion needs to be document, because I can’t figure out the inverse relationship (it’s not just deltaXY / dpr).

      I can’t think of any web app that wants the default browser zoom and swipe behavior on the touchpad. This is also confusing to our users since the XPS 15 (with precision touchpad) can’t do our pan-zoom or pinch-zoom behavior, but the Razer Stealth (without precsion touchpad) can.

    • It looks like this also does not send gesture start/change/end events. I’m all for Microsoft adding pointer events, but those don’t apply to touchpad. This simply needs to be fixed, and so does this:

      https://answers.microsoft.com/en-us/windows/forum/windows8_1-tms/microsoft-precision-touchpad-not-very-precise/ca01bc04-0db7-4241-bff9-192cfb5af012

      The driver for my Samsung Notebook 9, and a XPS 15, and the Surface, yadda, yadda all have a horrible h/vscroll lock (ignoring movement in the other direction), and making diagonal panning impossible along with precise creative tools editing. You can see this in browsers and in regular apps on these machines, but non-precision touchpads work fine. Once you move past the un-settable threshold, then panning works, but you lift your finger and it stops. Several individuals on that thread have pointed this out to Microsoft to no avail (like this ticket).

    • Had a good time at Microsoft’s Build 2017 conference this past week where I met a couple Edge engineers and some other Microsoft developers. Lots of very smart very nice people, one of whom (Brian Terlson) works on the ECMAScript Standard.

      Brian took a look at the bug, confirmed Edge is not interoperable, said it “seems bad” and that he’s "pretty sure this is the cause of some weirdness I’ve seen in the past".

      When I mentioned I was told that some believe 2-finger scrolling on the Precision Touchpad should be treated differently than other touchpads because the precision touchpad is more powerful and should thus be given its own API, Brian said "I mean, that’s all well and good, but it should also at a minimum meet user expectations of how trackpads work", which has been my argument for more than a year now.

      So, good news everyone. Brian, the man at Microsoft who works on the JavaScript spec agrees with us that this is a problem that needs to be fixed.

      Now on to the bad news… Brian, for all his good intentions, does not work on Edge, and thus does not have final say (though he told me he’d try to bring some attention to the problem).

      Absent from the Build conference was anybody willing to defend the decision thus far not to fix this bug, and it was made clear that the person holding up any improvements here is Matt R. The very Matt R this bug has been assigned to since Apr 21, 2016. I actually met someone who told me Matt is his PM who seemed very surprised that this wasn’t a priority given the number of “Me Too” votes it has received over the past year.

      I was told by Kyle Plufg that Matt has a “nuanced” view as to why he doesn’t want to fix this bug and that he doesn’t feel he can defend his decision.

      Matt, I’d hope you’re getting notifications about the comments we leave here as you’re assigned this bug. If you’re reading this, I hope I can convince you that this continues to be a pain point that prevents many of us from getting our apps to work the way they do in every other browser. I’d love to hear your nuanced take on the issue. And short of a proper fix, I’d love to get an option for a work around (even if that means going down the old IE6 path of building a new Edge-Only feature that doesn’t follow any spec because you think you can do better than the spec). I’m willing to play by your rules as it seems you have ultimate power on this issue, so if that’s the route you want to go… let’s do it. Let’s just make some progress. Nobody I talk to can trump your “nuanced” view on this issue, so… Congrats. You’re a powerful guy. Now please, use that power to make some progress. It’s time.

    • Thanks for the update Bryan!

    • Go Bryan! This is really something critical to fix. We’d like to say Edge is supported for our PWA, but this and the initial h/vscroll lock in the Microsoft mouse drivers (across all apps) make the Windows “precision” touchpads unusable IMHO. Microsoft has a competitor with a very good example of how a touchpad should work.

    • Hi,

      We run a SaaS called Remember The Milk, which includes a fairly complex web app that painstakingly implements native-like scrolling across platforms.

      We’ve had a couple of reports of users not being able to scroll in our web app on Edge but we’ve never quite understood why since it doesn’t happen in VMWare or a Windows laptop with a Synaptics trackpad.

      So… we got a Dell XPS 13 and yup, you can’t scroll in Edge on it due to whatever this ticket is.

      It works in Chrome. It works in our Electron based app.

      I attached a mouse and it works fine.

      I spent a couple of hours trying to figure out if there’s some hacky work around but there are no events sent to the browser. No touch events, no pointer events, no gesture events.

      And then I ended up here.

      This is kind of a weird bug to have in a major shipping browser. Why does the pointing device matter? I can’t say I spent the time it takes to read every comment on here, but yeah, I guess the TL;DR of my comment is: +1, please fix.

      Thanks.

    • A positive new development… Patrick Kettner (who works on Edge interop) just told me on twitter that he’s "actively working on a solution for devs who use the wheel event today".

      He says the block has been perf related. Separate threading model for PTPs means cancelable wheel event isn’t currently possible.

      If any of you use Twitter, might be good to chime in and give him some kind encouragement to let him know how important this is to you. Hopefully they’ll be able to get this baked into the bits that ship for the Fall Creator’s Update later this year.

    • +1 to this bug - ran into this building a UWP app ugh. I’m surprise it’s been around for so long and still not addressed. Now I understand why there’s so much hate for IE.

    • I can reproduce this bug on a Microsoft Surface Book product with precision touchpad. Please don’t let Edge go extinct like Internet Explorer. Let’s squash these bugs, Edge team!

    • I can confirm this issue. In my case, when accessing my Synology NAS Control Panel, I cannot scroll using the 2 finger gesture.

    • More new Laptops this bug cripples:

      • Surface Laptop (Which can’t event install chrome to work-around this issue without upgrading to Win 10 Pro)
      • Surface Pro (2017)
      • Razer Blade Stealth
    • This is just ridiculous. The almigthy Microsoft can’t fix this issue for years.
      Huge thanks to you Bryan for not giving up.

    • This is embarrassing and unprofessional. Lots of people reporting an issue and instead of finding a solution, just ignore it? Seriously? I would be fired if I worked this way, and rightfully so. After seeing the way this issue is being handled, I’ve lost all hope for Edge. Surely there are other issues that are just being ignored. Extremely disappointing. Why even bother making Edge? It makes no sense

    You need to sign in to your Microsoft account to add a comment.

    Sign in