tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>