events - Polymer 1.0 无法停止点击事件传播

标签 events polymer polymer-1.0

我有一个带有点击功能的纸张按钮,可以打开一个纸张对话框,其中包含一个“接受”纸张按钮,单击时将关闭它。

我遇到的问题是,如果取决于我的屏幕分辨率,并且对话框的“接受”按钮位于打开对话框的初始按钮上方,单击时,对话框会打开和关闭。我假设 on-tap 事件被触发到两者。

我已经尝试过这两种方法,但它们似乎没有帮助。

event.cancelBubble = true;
event.stopPropagation();

最佳答案

问题是电容屏幕甚至鼠标可以在几毫秒内在同一位置生成多个点击事件。

  • 鼠标因为高低电压(逻辑 1 和 0)的快速变化产生交流信号,如果条件匹配,它可以在电容器(可以是空气之间的按钮两个接触器)上跳槽。但是 onclick 事件已经捕捉到了这种情况,您不需要做任何事情来解决它。
  • 电容屏幕是电容器,只需滚动手指即可触发多个点击事件,因为您的皮肤具有不同的绝缘深度,并且在某些情况下很难标记点击的开始和结束。

  • 这个物理问题应该由平台来解决,但目前并不是在所有情况下(但大多数设备都在过滤这个)。我通常用一个透明的覆盖元素来解决这个问题,它可以在一段时间内捕获指针事件,这样我就可以在几毫秒内捕获按钮或电容屏幕的“预拉”。

    如果 10-20ms 对你来说足够了,那么在你的 on-tap 函数中等待一帧 requestAnimationFrame然后显示对话框。便宜的技巧,但它做了它必须做的,但最终你可以等待修复超时来显示对话框,因为你有 100 毫秒来响应用户交互。

    你不能通过操纵浏览器事件选项来解决这个问题,因为我知道你没有选择需要多长时间才能发生下一个相同的事件。但是,如果您等待一帧,则其行为就像您在事件之间添加延迟一样。

    关于events - Polymer 1.0 无法停止点击事件传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32223732/

    相关文章:

    polymer - 使用 Polymer 在同一 Web 组件的实例之间进行通信的最佳方式?

    css - 如何设置 gold-email-input Polymer 元素的样式?

    c++ - 使用带有 wxEvtHandler::Bind 的模板自定义 wxEvent

    c# - .NET:事件的困难

    javascript - Polymer 1.0 更改 <template> dom-repeat 中与 Javascript 的绑定(bind)

    Polymer 1.0 - 绑定(bind) css 类

    polymer - Polymer 1.0 中自动绑定(bind)模板中的计算绑定(bind)

    javascript - 如何在嵌入的 vimeo 视频开始播放时触发事件

    多个 animationend 事件上的 jQuery when()

    javascript - 使用 this.set 更改数组值时会导致 dom-repeat 出现奇怪的结果