我正在寻找有关 Chromium 的最佳实践,它允许我将“拖动”事件或“保持”事件转换为“点击”事件。
我正在构建一个在 TS-7990 触摸屏上运行的触摸屏应用程序,这让我很舒服,主要是因为用户倾向于按某个角度点击按钮,该角度注册为“拖动”事件而不是“点击”事件事件。我为此使用 ExtJS 6.2,但我希望有一个涉及一些 Chromium 开关的解决方案,也许是为了使更改全局化并针对该设备进行全面更改。有任何想法吗?
我正在寻找有关 Chromium 的最佳实践,它允许我将“拖动”事件或“保持”事件转换为“点击”事件。
我正在构建一个在 TS-7990 触摸屏上运行的触摸屏应用程序,这让我很舒服,主要是因为用户倾向于按某个角度点击按钮,该角度注册为“拖动”事件而不是“点击”事件事件。我为此使用 ExtJS 6.2,但我希望有一个涉及一些 Chromium 开关的解决方案,也许是为了使更改全局化并针对该设备进行全面更改。有任何想法吗?
所以,我的发现是我可以用 ExtJS 中的几行代码来解决这个问题。
Ext.define('override.event.gesture.Tap', {
override: 'Ext.event.gesture.Tap'
}, function (Tap) {
Tap.instance.setMoveDistance(4000);
});
通过将移动距离设置为 4000,我基本上是在说,“如果您的拖动小于 4000,则将其视为“点击”。以前该值设置为 8 像素。任何笨拙的工程师都可以提供对触摸屏的一击。
对于您提到的“涉及一些 Chromium 开关”的解决方案,您需要启用 Chromium 的触摸事件,然后将touchmove
事件转换为点击事件。
启动时打开铬的触摸事件
开始铬chromium-browser --touch-events=enabled
这会为您提供touchstart
、touchmove
、touchstop
和touchcancel
事件。请参阅MDN Touch Events以获得很好的解释。
当这些触摸事件存在时,在您的 JavaScript 代码中(可能在 index.html 中)设置一个标志
var isTouchDevice = 'ontouchstart' in document.documentElement;
if (isTouchEvent) {
document.ontouchmove = function (e) {
e.target.click();
}
}