CSS touch-action:在 Cordova 应用程序中并不总是禁用

Posted

技术标签:

【中文标题】CSS touch-action:在 Cordova 应用程序中并不总是禁用【英文标题】:CSS touch-action: not always disabling in Cordova app 【发布时间】:2018-10-13 02:31:09 【问题描述】:

问题

我在我的 CSS 中缺少什么以使我的 Cordova 应用程序中的无触摸操作的结果更加一致?


我正在使用 Cordova 构建一个应用程序(在 android 上测试)。我们有一个不应该滚动的完整页面选择,所以我在 CSS 中使用了touch-action: none。但它仍然滚动,但只是有时。

CSS

body 
    touch-action: none;

现在我通过打开/关闭 html 中的不同 div 来显示不同的“页面”。让我超级困惑的是,当它进入第一页时,它会滚动......一次!而且只有一次。所以我可以点击屏幕并向上/向下拖动页面,放开我就不能再滚动了。

但是。 我转到第二页,它会做同样的事情。它会让我滚动一次,但任何进一步的触摸事件都会被忽略。

这个问题是我喜欢的 html 选择器受此影响。它可以在哪里工作,但定期允许页面在不应该滚动的时候滚动。

我的理解是“touch-action: none”应该杀死 Android 上的所有触摸事件,而不仅仅是其中的一些。

【问题讨论】:

【参考方案1】:

经过更多的挖掘,我能够解决这个问题。

快速回答。 touch-action: none; 完全没问题。

我使用 Chrome 的远程开发人员工具连接到设备并观看控制台并不好。查看应用程序在运行时发生了什么。因为您可以通过开发人员工具触摸应用程序,所以我猜它正在设法搞砸触摸事件。就像忽略touch-action:none 并强制触摸动作发生一样。即使您通过开发人员工具仅触摸了真实设备而不是设备“sim”,它仍然会搞砸触摸事件。

所以解决方案。您可以使用开发人员工具来确保您已正确添加 css。然后关闭设备的开发人员工具并使用cordova run android 在cordova 中再次运行它,并且不要使用开发人员工具进行连接。

我花了两个工作日试图解决这个问题。 :(

【讨论】:

以上是关于CSS touch-action:在 Cordova 应用程序中并不总是禁用的主要内容,如果未能解决你的问题,请参考以下文章

vue 项目中出现不能左右滑动的问题

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

chrome 手机端滑动列表的时候控制台会出现很多提示的解决办法

Unable to preventDefault inside passive event listener due to target being treated as passive. See h

解决移动端报错:Unable to preventDefault inside passive event listener due to target being treated as……

解决移动端报错:Unable to preventDefault inside passive event listener due to target being treated as……(代码片段