我有一个带有点击功能的纸张按钮,可以打开一个纸张对话框,其中包含一个“接受”纸张按钮,单击时将关闭它。
我遇到的问题是,如果取决于我的屏幕分辨率,并且对话框的“接受”按钮位于打开对话框的初始按钮上方,单击时,对话框会打开和关闭。我假设 on-tap 事件被触发到两者。
我已经尝试过这两种方法,但它们似乎没有帮助。
event.cancelBubble = true;
event.stopPropagation();
最佳答案
问题是电容屏幕甚至鼠标可以在几毫秒内在同一位置生成多个点击事件。
这个物理问题应该由平台来解决,但目前并不是在所有情况下(但大多数设备都在过滤这个)。我通常用一个透明的覆盖元素来解决这个问题,它可以在一段时间内捕获指针事件,这样我就可以在几毫秒内捕获按钮或电容屏幕的“预拉”。
如果 10-20ms 对你来说足够了,那么在你的 on-tap 函数中等待一帧
requestAnimationFrame
然后显示对话框。便宜的技巧,但它做了它必须做的,但最终你可以等待修复超时来显示对话框,因为你有 100 毫秒来响应用户交互。你不能通过操纵浏览器事件选项来解决这个问题,因为我知道你没有选择需要多长时间才能发生下一个相同的事件。但是,如果您等待一帧,则其行为就像您在事件之间添加延迟一样。
关于events - Polymer 1.0 无法停止点击事件传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32223732/