Open
Description
What problem does this feature solve?
An event modifier to support passive
events was added in #5132.
In the last couple of years, browsers have adopted the passive
behavior by default for touchstart
and touchmove
events (reference). Thus, to be able to cancel one of these events by calling e.preventDefault()
, you need to explicitly pass { passive: false }
when adding the event listener.
With the current API this is impossible to achieve in a Vue template (as far as I can tell). You must manually add and remove the event listener in a component hook like so:
this.$refs.someElement.addEventListener('touchstart', this.start, { passive: false });
this.$refs.someElement.addEventListener('touchmove', this.move, { passive: false });
// later
this.$refs.someElement.removeEventListener('touchstart', this.start);
this.$refs.someElement.removeEventListener('touchmove', this.move);
What does the proposed API look like?
An event modifier that does the opposite of the passive
event modifier, specifying the option as false
instead of true
.
Unsure of the naming - perhaps nonPassive
, active
, assertive
, intentional
.
<div
@touchstart.active="start"
@touchmove.active="move"
></div>