如何取消Polymer创建的事件

时间:2015-06-24 19:14:35

标签: javascript events polymer

这似乎很简单。通常我们会这样做

e.preventDefault();

取消活动,其中e是一个事件。但是在这种情况下,我想在Polymer创建的custom track event内取消touchmove事件。

通过检查e.detail,我们可以看到e.detail.sourceEvent属性包含原始Touch 事件 (更正:它是Touch个对象而不是事件。问题与取消原始touchmove事件的方法相同。) < /子>

我试图通过常用方法取消它:

e.detail.sourceEvent.preventDefault();

令人惊讶的是它没有用。该事件根本不存在.preventDefault

所以问题是如何取消此Touch事件?我试图通过取消此事件来暂时使元素不可滚动。

3 个答案:

答案 0 :(得分:2)

我能想到的最简单的解决方案是在第一个事件结束时触发所有必要的事件,然后停止传播。这是一个想法的原型:

_firstEventThatWouldFire: function(e) {
  ... do some stuff
  this.fire('necessaryEvent1');
  this.fire('necessaryEvent2');
  e.stopPropagation(); // this prevents unNecessaryEvent3 from being triggered
}

希望得到帮助。

答案 1 :(得分:0)

您是否尝试过e.detail.sourceEvent.cancelBubble = truee.detail.sourceEvent.stopPropagation()

答案 2 :(得分:0)

您似乎可以在触摸事件now上致电Set<StringBuilder> setsb = new TreeSet<>(Comparator.comparing(Object::toString));