【发布时间】:2019-10-29 16:06:37
【问题描述】:
在计算机上使用鼠标时,单击事件可以正常工作。即使我将鼠标按钮放在按钮移动光标上,然后在按钮区域内释放鼠标按钮,点击事件也会触发。但与触摸屏相同,它不起作用。我知道原因是在触摸屏中,这种拖动被视为滚动。当我没有在按钮上移动太多手指时会触发 Click 事件。所以只能上下不动。我的客户遇到的问题是他们移动手指太多并且很难获得点击事件。是否可以为手指可以移动多少设置更大的阈值,它仍然被认为是点击而不是滚动?
我发现这篇文章中触摸事件由自己处理并将它们翻译为点击事件。 http://phonegap-tips.com/articles/fast-touch-event-handling-eliminate-click-delay.html我不想走这条路。
您有什么建议可以解决这个问题吗?
这里有更多关于触摸事件的详细信息https://developer.mozilla.org/en-US/docs/Web/API/Touch_events 查看处理点击,其中描述了点击在触摸屏中的工作方式。仍然我没有设法工作。几个月前,我向我的 touchmove 事件处理程序发送了evt.preventDefault();,它确实解决了问题,但目前似乎没有。
编辑:2019.11.5
这是之前有效但不再有效的方法:
html
<body (touchmove)="touchMoveEvent($event)"></body>
TypeScript
touchMoveEvent(ev: Event): void
{
ev.preventDefault();
}
这里是按钮和单击处理程序的基本角度示例,如果用户移动手指过多,则该处理程序不起作用。我没有检查什么是阈值,但我认为它接近 10px-20px。
<button (click)="onClickEventHandler($event)">Press button</button>
onClickEventHandler(ev: Event) {
//do the thing here
}
我已经使用 chrome 的 devtools 切换设备工具栏测试了触摸屏功能。
【问题讨论】:
-
请添加您的代码
-
解决了吗?如果没有请添加代码
-
不,还没有解决。稍后我会在我的电脑上添加一些代码。
标签: javascript angular onclick touchscreen