synthetic-events-cancelable.html (1283B)
1 <!DOCTYPE html> 2 <title>Synthetic events are always cancelable by default</title> 3 <link rel="help" href="https://dom.spec.whatwg.org/#dictdef-eventinit"> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script> 7 const eventsMap = { 8 wheel: 'WheelEvent', 9 mousewheel: 'WheelEvent', 10 touchstart: 'TouchEvent', 11 touchmove: 'TouchEvent', 12 touchend: 'TouchEvent', 13 touchcancel: 'TouchEvent', 14 } 15 function isCancelable(eventName, interfaceName) { 16 test(() => { 17 assert_implements(interfaceName in self, `${interfaceName} should be supported`); 18 let defaultPrevented = null; 19 addEventListener(eventName, event => { 20 event.preventDefault(); 21 defaultPrevented = event.defaultPrevented; 22 }); 23 const event = new self[interfaceName](eventName); 24 assert_false(event.cancelable, 'cancelable'); 25 const dispatchEventReturnValue = dispatchEvent(event); 26 assert_false(defaultPrevented, 'defaultPrevented'); 27 assert_true(dispatchEventReturnValue, 'dispatchEvent() return value'); 28 }, `Synthetic ${eventName} event with interface ${interfaceName} is not cancelable`); 29 } 30 for (const eventName in eventsMap) { 31 isCancelable(eventName, eventsMap[eventName]); 32 isCancelable(eventName, 'Event'); 33 } 34 </script>