【发布时间】:2015-11-29 12:32:12
【问题描述】:
我正在为一个使用触摸屏作为交互输入的展览构建一个 Web 应用程序。如果用户决定向屏幕发送垃圾邮件(疯狂地),event.touches 会在一段时间后相信一次触摸(一根手指)包含多个触摸事件。即使我刷新网页(f5 / shift-f5 产生相同的结果),它仍然会告诉我单指触摸是在几个不同位置的触摸。完全重置它的唯一方法似乎是完全重启浏览器。
网络应用是为 Chrome 构建的。
有人知道是什么原因造成的,以及如何预防吗?如果触摸点超过 5(以防止更多触摸),我尝试使用指针事件放置 100% 屏幕大小的覆盖层(以防止更多触摸),但即便如此 Chrome 也会注册触摸并变得很糟糕。
提前致谢!
编辑:该错误不会出现在 Chrome 的 Metro/Windows 8 模式中。但是,Metro Chrome 不尊重--kiosk,导致它在展览中无法使用。
【问题讨论】:
-
真的只是在黑暗中拍摄,但您是否尝试过运行 d3.timer.flush()?听起来可能拥有触摸行为的功能正在重新初始化,但以前的实例没有被 GC,因为这些实例设置了来自计时器的回调。例如,您可以在强制布局中获得它。
-
谢谢!我会尽快尝试。但是,刷新时不应该重置所有 d3 事件/计时器/调用/等吗?
-
这是可取的,但计时器队列非常轻,因为它是热代码,但有时它可能有点太轻了。有一个open issue on this 将在未来的版本中修复。更详细的解释here
-
不幸的是,它没有帮助。还是谢谢你。 :)
-
是的,好的,就像我说的:在黑暗中拍摄。您可以发布一些代码或提供指向工作站点的链接吗?
标签: javascript jquery html google-chrome d3.js