diff --git a/lib/helpers.js b/lib/helpers.js index 8af852f..92b660b 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -19,6 +19,12 @@ function makeEventListener (fn, path) { } +function ignoreEvent (event) { + event.stopPropagation() + event.preventDefault() +} + + function bindEvents (events, useCapture) { var listeners = {} @@ -28,11 +34,16 @@ function bindEvents (events, useCapture) { var key if (value === null) - for (key in events) + for (key in events) { // The point of removing event listeners here is not manual memory // management, but to ensure that after the value has been unset, it // no longer triggers events. node.removeEventListener(key, listeners[key], useCapture) + + // Add a capturing event listener to make future events effectively + // ignored. + node.addEventListener(key, ignoreEvent, true) + } else if (previousValue === null) for (key in events) { listeners[key] = makeEventListener(events[key], path)