event-handler-processing-algorithm.html (2878B)
1 <!DOCTYPE html> 2 <title>Event handlers processing algorithm</title> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <body> 6 <div id="foo" style="width: 100px; height: 100px; background-color: black"></div> 7 <script> 8 9 // Historically mouseover was special in the spec, but now it is not. See https://github.com/whatwg/html/pull/2398. 10 test(function(t) { 11 var ev = new Event('mouseover', {cancelable: true}); 12 document.getElementById("foo").onmouseover = t.step_func(function() { return false }); 13 document.getElementById("foo").dispatchEvent(ev); 14 assert_equals(ev.defaultPrevented, true) 15 }, "mouseover listener returning false cancels event (using Event)"); 16 17 test(function(t) { 18 var ev = new MouseEvent('mouseover', {cancelable: true}); 19 document.getElementById("foo").onmouseover = t.step_func(function() { return false }); 20 document.getElementById("foo").dispatchEvent(ev); 21 assert_equals(ev.defaultPrevented, true) 22 }, "mouseover listener returning false cancels event (using MouseEvent)"); 23 24 test(function(t) { 25 var ev = new Event('mouseover', {cancelable: true}); 26 document.getElementById("foo").onmouseover = t.step_func(function() { return true }); 27 document.getElementById("foo").dispatchEvent(ev); 28 assert_equals(ev.defaultPrevented, false) 29 }, "mouseover listener returning true doesn't cancel event (using Event)"); 30 31 test(function(t) { 32 var ev = new MouseEvent('mouseover', {cancelable: true}); 33 document.getElementById("foo").onmouseover = t.step_func(function() { return true }); 34 document.getElementById("foo").dispatchEvent(ev); 35 assert_equals(ev.defaultPrevented, false) 36 }, "mouseover listener returning true doesn't cancel event (using MouseEvent)"); 37 38 // beforeunload is tested in html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html 39 40 test(function(t) { 41 var ev = new Event("click", {cancelable: true}); 42 document.getElementById("foo").onclick = t.step_func(function() { return false; }); 43 document.getElementById("foo").dispatchEvent(ev); 44 assert_equals(ev.defaultPrevented, true); 45 }, "click listener returning false cancels event"); 46 47 test(function(t) { 48 var ev = new Event("blur", {cancelable: true}); 49 document.getElementById("foo").onblur = t.step_func(function() { return false; }); 50 document.getElementById("foo").dispatchEvent(ev); 51 assert_equals(ev.defaultPrevented, true); 52 }, "blur listener returning false cancels event"); 53 54 test(function(t) { 55 var ev = new Event("dblclick", {cancelable: true}); 56 document.getElementById("foo").ondblclick = t.step_func(function() { return false; }); 57 document.getElementById("foo").dispatchEvent(ev); 58 assert_equals(ev.defaultPrevented, true); 59 }, "dblclick listener returning false cancels event"); 60 </script>