更新
我相当确定这是最新的Android Chrome浏览器中的错误。我仍在尝试找出导致该问题的原因,但我看到的行为是:
上/下触摸事件仍然有效,只是拖动中断了。
更多详细信息和解决方法:
我正在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在后台进行了更新。