compile-event-handler-symbol-unscopables.html (2302B)
1 <!DOCTYPE html> 2 <meta charset="UTF-8" /> 3 <title>Inline event handler scopes exclude unscopable properties</title> 4 <link rel="author" title="ExE Boss" href="https://ExE-Boss.tech" /> 5 <link rel="help" href="https://html.spec.whatwg.org/multipage/webappapis.html#getting-the-current-value-of-the-event-handler" /> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 9 <script> 10 "use strict"; 11 window.testVariable = {}; 12 </script> 13 14 <!-- test case 1: element, document, and window --> 15 <div id="test1_target" onclick=' 16 "use strict"; 17 18 window.testResults.testVariable = testVariable; 19 '></div> 20 21 <script> 22 "use strict"; 23 24 test(() => { 25 const results = window.testResults = {}; 26 27 document[Symbol.unscopables].testVariable = true; 28 document.testVariable = "FAIL (document)"; 29 30 document.getElementById("test1_target").click(); 31 assert_equals(results.testVariable, window.testVariable); 32 }, "unscopable `document.testVariable` doesn't shadow `window.testVariable`"); 33 34 test(() => { 35 const results = window.testResults = {}; 36 const element = document.getElementById("test1_target"); 37 38 element[Symbol.unscopables].testVariable = true; 39 element.testVariable = "FAIL (element)"; 40 41 element.click(); 42 assert_equals(results.testVariable, window.testVariable); 43 }, "unscopable `element.testVariable` doesn't shadow `window.testVariable`"); 44 </script> 45 46 <!-- test case 2: element, form owner, document, and window --> 47 <form id="test2_form_owner" onsubmit="return false;"> 48 <!-- <button> is a form-associated element and has a form owner. 49 https://html.spec.whatwg.org/C/#form-associated-element --> 50 <button id="test2_target" onclick=' 51 "use strict"; 52 53 window.testResults.testVariable = testVariable; 54 '></button> 55 </form> 56 57 <script> 58 "use strict"; 59 60 test(() => { 61 const results = window.testResults = {}; 62 const element = document.getElementById("test2_target"); 63 const formOwner = document.getElementById("test2_form_owner"); 64 65 formOwner[Symbol.unscopables].testVariable = true; 66 formOwner.testVariable = "FAIL (formOwner)"; 67 68 element.click(); 69 assert_equals(results.testVariable, window.testVariable); 70 }, "unscopable `formOwner.testVariable` doesn't shadow `window.testVariable`") 71 </script>