手势在文本区域或输入中开始时的触摸动作行为

Posted

技术标签:

【中文标题】手势在文本区域或输入中开始时的触摸动作行为【英文标题】:touch-action behavior when gesture begins in textarea or input 【发布时间】:2020-10-17 22:19:25 【问题描述】:

似乎当手势以textareainput 开始时,touch-action 会被忽略。这对我来说是出乎意料的。预期行为:touch-action 被考虑在内,例如不会发生滚动(参见下面的演示)。

Demo:https://jsfiddle.net/1x8pc5ed/1/(打开桌面浏览器开发者工具并激活触摸模拟或者直接在手机上打开,然后尝试从textareainput等区域滚动页面开始手势比较。)

我已经在 Firefox 和 Chrome 中测试过:

Chrome 仅在 textarea 情况下忽略 touch-action。 Firefox 在inputtextarea 情况下会忽略touch-action

谁能解释这种行为?对我来说它看起来像一个错误。

【问题讨论】:

【参考方案1】:

关于textarea案例:

这可能不是错误,而是预期的行为。

根据https://w3c.github.io/pointerevents/#determining-supported-touch-behavior:

如果触摸行为符合命中测试元素与其最近的具有默认触摸行为的祖先之间的每个元素的 touch-action 属性(包括命中测试元素和具有默认触摸行为的元素),则支持触摸行为.

即在这种情况下,链在textarea 开始和结束,因为textarea 可能具有默认触摸行为(可能是可滚动的)。

textarea 上应用overflow: hiddentouch-action: none 以防止滚动。

【讨论】:

以上是关于手势在文本区域或输入中开始时的触摸动作行为的主要内容,如果未能解决你的问题,请参考以下文章

在angular2中输入空格以外的字符时启用按钮

jQuery .html() 不会复制文本区域或输入的内容

如何使在文本区域中输入的文本对应于特定的单选按钮?

Javascript - 在文本区域中中断但不在段落中

双击文本区域或文本框时指定突出显示行为?

如何使用javascript在文本区域中设置输入类型文本中的值? [复制]