防止默认和停止传播不使用pointermove

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防止默认和停止传播不使用pointermove相关的知识,希望对你有一定的参考价值。

我正在制作一个应用程序来绘制html5 canvas,但我无法通过手机或平板电脑进行。

按下时,我无法避免浏览器的本机滚动或Chrome刷新

我在jsfiddle中创建了一个例子,你可以看到它。

答案

要禁止默认UA行为,您需要将CSS属性touch-action: none添加到canvas元素。

touch-action指定HTML元素是否以及如何响应手势。使用touch-action: none不会触发UA行为(例如拖动或缩放)。默认属性是touch-action: auto,它允许触发所有UA行为。

另一答案

这看起来像是一个真正的Chrome错误,我将使用您的示例代码进行报告。如果要在javascript中动态决定是否使用自己的代码处理pointerMove而不是允许本机浏览器处理,则在CSS中设置触摸操作不是解决方案。

如果设置touch-action:“none”,则本机浏览器处理将永远不会运行。相反,正如您所报道的那样,没有触摸操作设置(相当于默认的“自动”)将无效,因为Chrome会忽略对preventMove上的preventDefault()调用并仍然调用pointerCancel - 一个错误。

请注意,如果您为touchMove添加了一个侦听器,则使用passive:false标志,则preventDefault()将按预期工作,从而避免使用touchCancel。但是,您必须使用单独的鼠标事件和触摸事件侦听器,这是您要通过使用指针事件来避免的。

以上是关于防止默认和停止传播不使用pointermove的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vuejs 中防止/停止点击传播

如何制作 AngularJS 指令来停止传播?

停止鼠标事件传播

jQuery Mobile 停止对父级的点击传播

如何让“Pointermove”委托在父母/孩子的Safari iOS中工作?

Flutter - 监听硬件按键。防止默认行为,android