如何使用元素上的指针事件禁用整个页面的滚动?
How to disable scroll of the whole page using pointer events on an element?
我有一个允许在 canvas 上绘图的库。目前,它支持鼠标和触摸事件。我也想添加对指针事件的支持。
我正在处理 canvas 元素上的 pointerdown
、pointermove
和 pointerup
事件。当我使用鼠标时,在笔记本电脑上 Chrome 一切正常。但是,当我在我的平板电脑上试用它时,在获得 pointercancel
事件后跟 pointerout
和 pointerleave
之前,我只得到一些 pointermove
事件(2-5) .
我猜浏览器正在触发 pointercancel
,因为将我的手指移到 canvas 上也会触发整个页面的滚动。
要在使用触摸事件时禁用滚动,我在 touchstart
和 touchmove
事件的处理程序中调用 event.preventDefault()
,但此解决方案似乎不适用于指针事件。
如何在使用指针事件时在 canvas 元素上绘制时禁用整个页面的滚动?
你试过CSS属性touch-action: none
了吗?它禁用元素上的任何类型的用户代理行为(如滚动)。
有关更细粒度的选项,请查看 touch-action 的 MDN 文章。
我有一个允许在 canvas 上绘图的库。目前,它支持鼠标和触摸事件。我也想添加对指针事件的支持。
我正在处理 canvas 元素上的 pointerdown
、pointermove
和 pointerup
事件。当我使用鼠标时,在笔记本电脑上 Chrome 一切正常。但是,当我在我的平板电脑上试用它时,在获得 pointercancel
事件后跟 pointerout
和 pointerleave
之前,我只得到一些 pointermove
事件(2-5) .
我猜浏览器正在触发 pointercancel
,因为将我的手指移到 canvas 上也会触发整个页面的滚动。
要在使用触摸事件时禁用滚动,我在 touchstart
和 touchmove
事件的处理程序中调用 event.preventDefault()
,但此解决方案似乎不适用于指针事件。
如何在使用指针事件时在 canvas 元素上绘制时禁用整个页面的滚动?
你试过CSS属性touch-action: none
了吗?它禁用元素上的任何类型的用户代理行为(如滚动)。
有关更细粒度的选项,请查看 touch-action 的 MDN 文章。