簡體   English   中英

preventdefault和stoppropagation不適用於pointermove

[英]preventdefault and stoppropagation not working with pointermove

我正在制作一個可在HTML5 canvas內繪制的應用程序,但無法在移動設備或平板電腦上完成。

當按下時,我無法避免瀏覽器的本機滾動或鑲邊刷新

我在jsfiddle中創建了一個示例,因此您可以看到它。

要取消默認的UA行為,您需要將CSS屬性touch-action: none到canvas元素。

touch-action指定HTML元素是否以及如何響應手勢。 使用touch-action: none沒有觸發任何UA行為(例如,拖動或縮放)。 默認屬性是touch-action: auto ,它允許觸發所有UA行為。

這看起來像是一個真正的Chrome錯誤,我將使用您的示例代碼進行報告。 如果您想在JavaScript中動態地決定是否使用自己的代碼來處理pointerMove與允許本地瀏覽器來處理,則在CSS中設置觸摸動作不是解決方案。

如果將觸摸操作設置為“無”,則本機瀏覽器處理將永遠不會運行。 相反,正如您所報告的那樣,沒有觸摸操作設置(相當於默認的“自動”)將無法正常工作,因為Chrome會忽略對pointerMove上的preventDefault()的調用,並且仍會調用pointerCancel-一個錯誤。

請注意,如果改為使用passive:false標志為touchMove添加偵聽器,則preventDefault()將按預期工作,從而避免了touchCancel。 但是,您必須使用單獨的鼠標事件和觸摸事件偵聽器,而這正是通過使用指針事件來避免的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM