Skip to main content
Pointer events updates

Pointer events are events and related interfaces that handle hardware agnostic pointer input from devices like a mouse, pen, or touchscreen. Since its premier in Internet Explorer 10, Pointer events has become a World Wide Web Consortium (W3C) specification, thanks to the feedback and support from other browser vendors and the web standards community.

To comply with the Candidate Recommendation of the W3C Pointer Events specification, the Internet Explorer 11 implementation has changed slightly from that of Internet Explorer 10.

MS vendor prefix removal

Because the W3C Pointer Events specification wasn't complete when Internet Explorer 10 was released, vendor prefixes were used for the Pointer Events implementation. Since then, the specification has reached Candidate Recommendation status, and the MS vendor prefix versions of the APIs have been deprecated in favor of the non-prefixed signatures defined in the spec. As of IE11, the Microsoft prefixed versions of pointer events APIs are no longer supported and have been completely removed from the EdgeHTML in Microsoft Edge.

Deprecated APIReplacement API
MSPointerDown eventpointerdown event
MSPointerUp eventpointerup event
MSPointerCancel event pointercancel event
MSPointerMove eventpointermove event
MSPointerOver eventpointerover event
MSPointerOut eventpointerout event
MSPointerEnter eventpointerenter event
MSPointerLeave eventpointerleave event
MSGotPointerCapture eventgotpointercapture event
MSLostPointerCapture eventlostpointercapture event
-ms-touch-action CSS propertytouch-action CSS property property
onmspointer* attributesonpointer* attributes
element.msSetPointerCapture() method element.setPointerCapture() method
element.msReleasePointerCapture() methodelement.releasePointerCapture() method


If your code uses pointer events and you need to maintain compatibility with Internet Explorer 10, you can use the following fallback pattern:

if(window.PointerEvent) {
    elm.addEventListener("pointerdown", foo);
} else if (window.MSPointerEvent) {
    elm.addEventListener("MSPointerDown", foo);
} else {
    elm.addEventListener("mousedown", foo);

Behavioral updates

The technical details of the W3C pointer events specification have changed. The IE11 implementation of pointer events has the following behavioral changes from the original implementation in Internet Explorer 10.

Pointer events area Internet Explorer 10IE11
Not supportedSupported
PointerEvent. button
PointerEvent. buttons
Pen eraser button not supportedSupports pen eraser button
PointerEvent. pressureAlways returns a value of 0 on hardware that doesn't support pressureReturns a value of 0.5 for active contact (such as mouse button push) and 0 otherwise on hardware that doesn't support pressure
PointerEvent. height
PointerEvent. width
Return values in screen pixelsReturn values in CSS document pixels
Dispatches MouseEventDispatches PointerEvent (inherits from MouseEvent)
PointerEvent. pointerTypeReturns integer valueReturns string value
releasePointerCaptureWhen called on an element, releases capture for the specified pointer from whichever element currently has captureOnly releases pointer if calling element already has capture (using setPointerCapture)
MSPointerHoverSupported (fires when a pen moves over an element without touching the surface)Not supported (doesn't fire). Use pointermove and inspect the event.buttons property to determine if the pointer is hovering. Other hover behaviors, like CSS :hover, are still applied.
pointermoveFor pen, fires only when touching the surface (when not hovering)Fires for all pen movement (regardless if its hovering or not)
pointerEnabledSupported with vendor prefix (msPointerEnabled)Supported without prefix (pointerEnabled), but deprecated in favor of using window. PointerEvent interface for feature detection.