输入类型=范围滑动行为在Android上的Chrome中损坏

时间:2019-06-07 22:07:19

标签: android html google-chrome

更新

我相当确定这是最新的Android Chrome浏览器中的错误。我仍在尝试找出导致该问题的原因,但我看到的行为是:

  • 在诸如滑块之类的事情上进行触摸拖动事件可以正常工作,直到;
  • 在同一浏览器视图/选项卡中加载了其他内容(仍然试图确定该“内容”是什么)。
  • 触摸拖动事件现在在相同的浏览器视图/选项卡中失败,即使手动更改了URL以便将先前工作的滑块加载到其他页面上也是如此。
  • 打开新的浏览器视图/标签来加载滑块会恢复触摸功能,但旧视图会永久损坏。

上/下触摸事件仍然有效,只是拖动中断了。

更多详细信息和解决方法:

我正在SPA中工作。我将元素动态添加为页面上的一个“视图”,然后将这些元素交换出另一个包含滑块的“视图”。似乎上面提到的“某些内容”是由于在第二个视图上添加了JS触摸处理程序事件所致。 但是,如果我将触摸处理程序添加到第一个动态创建的视图中,甚至在其他空元素上添加触摸处理程序,第二个视图上的滑块也可以正常工作,并且没有“永久”破坏触摸拖动事件。

我将尝试整理一个最小的复制案例,以作为错误报告发送给Chrome小组。

原始帖子

我有一个自定义SVG控件,其作用类似于<input type="range">滑块,该滑块最近停止响应Android Chrome上的触摸/拖动事件。深入研究一段时间后,我也可以使用普通的输入滑块来复制该问题。我怀疑,该问题是我的Chrome版本中的一个错误(我没有进行任何更改,并且它最近才开始出现故障),但是我正在尝试解决该问题;我的怀疑是浏览器拖动事件不再完全传递给我的控件,但是我不确定如何强制这种情况发生。

这是一个最小的复制案例,当在常规的Android Chrome浏览器中加载时,对我无响应:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <input type="range" min="0" max="50">
  </body>
</html>

但是,我发现其他examples似乎可以正常工作,这表明此版本的Chrome(在Android 9上运行的75.0.3770.67)并不是纯粹的错误。我有什么解决方法可以使它再次响应,因为它似乎可以在 some 情况下工作? (最好是可以将解决方案转移到我的SVG控件上,但是在这一点上,如果可以恢复损坏的功能,我将使用基本的滑块。)

这不会在我的桌面浏览器上失败,也不会在iOS上失败。它可以在较旧的Android设备上运行(在Android 6上运行的Chrome版本74.0.3729.136)。在出现故障的设备上,该设备一直工作到“最近”(我收到客户支持电子邮件后才发现它完全坏了),很可能是Chrome在后台进行了更新。

0 个答案:

没有答案