调度从同一事件处理程序开始冒泡的事件?

时间:2015-01-07 19:44:46

标签: javascript javascript-events event-bubbling

有没有人知道确保从相同的事件处理程序开始调度事件监听器的任何技术?

以下是一个例子:

form.addEventListener('submit', function(e) {
  console.log('submitting');
});

form.addEventListener('submit', function(e) {
  if (form.getAttribute('submitting')) return true;

  e.preventDefault();
  e.stopImmediatePropagation();

  setTimeout(function() {
    console.log('submit');
    form.setAttribute('submitting', 'submitting');
    // some "re-submit" dispatch logic
    dispatch(form, 'submit');
  }, 0);
});

form.addEventListener('submit', function(e) {
  console.log('submitted');
  e.preventDefault();
});

如果按下提交按钮,您将获得:

submitting
submit
submitting
submitted

这不太理想,能够得到它是很好的:

submitting
submit
submitted

由于这将是库的一部分,请假设您无法修改事件前后处理程序。

0 个答案:

没有答案