如何防止长按结束时发出咔嗒声
How can you prevent a click from firing at the end of a long press?
我问是因为这种情况:
我把手指放在一个清单上。在500ms
之后,会触发Hammer press
事件,页面显示一个动作表。在1s
之后,我举起手指,一个click
事件启动(一个常规的点击,而不是Hammer发出的点击)。我的手指在动作表背景上,它有一个关闭自己的点击处理程序。
我意识到使用Hammer tap
事件来关闭动作表是可行的,因为它有250ms
的最大持续时间,但动作表库使用click
事件。如果持续时间为例如250ms
,有没有办法告诉浏览器不要点击?或者告诉浏览器不要发出下一次点击?
您是否根据hammer.js页面关于禁用重影点击的讨论实现了以下解决方案?
https://developers.google.com/mobile/articles/fast_buttons#ghost
hammer.js
我刚刚在Ionic中遇到了同样的问题:ActionSheet在触摸结束后消失了。
我想出了以下解决方法:使用pointer-events: none
忽略HammerJS中pressup
事件之后元素上的click
事件。该解决方案利用了click
事件在pressup
事件之后立即在元素上激发的事实,因此我们能够通过处理pressup
以某种方式防止它。
在全局样式中,我添加了以下辅助类:
.prevent-pointer-events {
pointer-events: none;
}
然后,在我处理press
事件的同一个元素上,我添加了一个新的pressup
事件处理程序,它执行以下操作:
element.classList.add('prevent-pointer-events');
setTimeout(() => {
element.classList.remove('prevent-pointer-events');
}, 50); // after 50ms we are sure the "click" event was fired and ignored,
// so we can revert the class name back
请注意,这个解决方案是本地的,只针对一个元素,尽管它可以扩展为处理文档主体上的全局pressup
事件。
相关文章:
- 防止Iframe窗体在新窗口中打开
- 为什么“;未定义的“;在JavaScript中结束循环
- 有没有一种方法可以防止img get请求使用css或js发生
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 循环结束/推送到数组之前在页面上呈现EJS
- 如何防止网页加载后自动启动功能
- 在另一个函数成功结束后调用该函数
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- 防止默认锚点行为AngularJS
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- 防止ng重复中的重复值(AngularJS)
- 在动画结束之前调用函数
- ExtJS网格单元格编辑器,防止焦点松动问题
- 防止jQuery Mobile中的ajax缓存
- 如何防止长按结束时发出咔嗒声
- 防止回调运行,直到动画结束
- JavaScript 如何在过渡结束之前防止点击
- 防止第二次执行,直到第一次执行在jquery中结束
- 防止超时功能结束前点击按钮
- 当使用HTML mailto时,如何防止表单字段在消息体中结束