onselectionchange-on-distinct-text-controls.html (1788B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <link rel="help" href="https://w3c.github.io/selection-api/#selectionchange-event"> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <body> 7 <input id="input1" value="hello"> 8 <input id="input2" value="world"> 9 <textarea id="textarea1">hello</textarea> 10 <textarea id="textarea2">world</textarea> 11 <script> 12 13 promise_test(() => { 14 return (async function() { 15 let selectionChangeCount1 = 0; 16 let selectionChangeCount2 = 0; 17 input1.addEventListener("selectionchange", () => ++selectionChangeCount1); 18 input2.addEventListener("selectionchange", () => ++selectionChangeCount2); 19 input1.setSelectionRange(1, 2); 20 input1.setSelectionRange(2, 3); 21 input2.setSelectionRange(1, 3); 22 assert_equals(selectionChangeCount1, 0); 23 assert_equals(selectionChangeCount2, 0); 24 await new Promise(setTimeout); 25 assert_equals(selectionChangeCount1, 1); 26 assert_equals(selectionChangeCount2, 1); 27 })(); 28 }, "selectionchange event on each input element fires independently"); 29 30 promise_test(() => { 31 return (async function() { 32 let selectionChangeCount1 = 0; 33 let selectionChangeCount2 = 0; 34 textarea1.addEventListener("selectionchange", () => ++selectionChangeCount1); 35 textarea2.addEventListener("selectionchange", () => ++selectionChangeCount2); 36 textarea1.setSelectionRange(1, 2); 37 textarea1.setSelectionRange(2, 3); 38 textarea2.setSelectionRange(1, 3); 39 assert_equals(selectionChangeCount1, 0); 40 assert_equals(selectionChangeCount2, 0); 41 await new Promise(setTimeout); 42 assert_equals(selectionChangeCount1, 1); 43 assert_equals(selectionChangeCount2, 1); 44 })(); 45 }, "selectionchange event on each textarea element fires independently"); 46 47 </script>