preventDefault-during-activation-behavior.html (1590B)
1 <!DOCTYPE html> 2 <title>preventDefault during activation behavior</title> 3 <link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1197032"> 4 <link rel="help" href="https://html.spec.whatwg.org/multipage/C#the-button-element"> 5 <link rel="help" href="https://dom.spec.whatwg.org/#dispatching-events"> 6 <link rel="author" title="L. David Baron" href="https://dbaron.org/"> 7 <link rel="author" title="Google" href="http://www.google.com/"> 8 <script src="/resources/testharness.js"></script> 9 <script src="/resources/testharnessreport.js"></script> 10 <body> 11 12 <form id="f"> 13 <input type="submit" id="b"> 14 </form> 15 16 <script> 17 18 promise_test(async () => { 19 let form = document.getElementById("f"); 20 let button = document.getElementById("b"); 21 22 let cached_event; 23 let submit_fired = false; 24 25 let click_promise = new Promise((resolve, reject) => { 26 button.addEventListener("click", event => { 27 assert_false(submit_fired); 28 cached_event = event; 29 resolve(); 30 }); 31 }); 32 33 form.addEventListener("submit", event => { 34 assert_false(submit_fired); 35 assert_true(!!cached_event, "click should have fired"); 36 37 // Call preventDefault on the click event during its activation 38 // behavior, to test the bug that we're trying to test. 39 cached_event.preventDefault(); 40 41 // prevent the form submission from navigating the page 42 event.preventDefault(); 43 44 submit_fired = true; 45 }); 46 47 assert_false(submit_fired); 48 button.click(); 49 await click_promise; 50 assert_true(submit_fired); 51 }, "behavior of preventDefault during activation behavior"); 52 53 </script>