event-handler-spec-example.window.js (2887B)
1 var objects = [{}, function() {}, new Number(42), new String()]; 2 var primitives = [42, null, undefined, ""]; 3 var firstEventHandler; 4 objects.forEach(function(object) { 5 test(t => { 6 var i = 0; 7 firstEventHandler = t.unreached_func('First event handler.'); 8 var uncalled = "firstEventHandler();"; 9 var button = document.createElement('button'); 10 button.onclick = object; // event handler listener is registered here 11 assert_equals(button.onclick, object); 12 button.addEventListener('click', t.step_func(() => { assert_equals(++i, 2) }), false); 13 button.setAttribute('onclick', uncalled); 14 button.addEventListener('click', t.step_func(() => { assert_equals(++i, 3) }), false); 15 button.onclick = t.step_func(() => { assert_equals(++i, 1); }); 16 button.addEventListener('click', t.step_func(() => { assert_equals(++i, 4) }), false); 17 button.click() 18 assert_equals(button.getAttribute("onclick"), uncalled) 19 assert_equals(i, 4); 20 }, "Event handler listeners should be registered when they are first set to an object value " + 21 "(" + format_value(object) + ")."); 22 }); 23 primitives.forEach(function(primitive) { 24 test(t => { 25 var i = 0; 26 firstEventHandler = t.unreached_func('First event handler.'); 27 var uncalled = "firstEventHandler();"; 28 var button = document.createElement('button'); 29 button.onclick = primitive; 30 assert_equals(button.onclick, null); 31 button.addEventListener('click', t.step_func(() => { assert_equals(++i, 1) }), false); 32 button.setAttribute('onclick', uncalled); // event handler listener is registered here 33 button.addEventListener('click', t.step_func(() => { assert_equals(++i, 3) }), false); 34 button.onclick = t.step_func(() => { assert_equals(++i, 2); }); 35 button.addEventListener('click', t.step_func(() => { assert_equals(++i, 4) }), false); 36 button.click() 37 assert_equals(button.getAttribute("onclick"), uncalled) 38 assert_equals(i, 4); 39 }, "Event handler listeners should be registered when they are first set to an object value " + 40 "(" + format_value(primitive) + ")."); 41 }); 42 test(t => { 43 var i = 0; 44 firstEventHandler = t.unreached_func('First event handler.'); 45 var uncalled = "firstEventHandler();"; 46 var button = document.createElement('button'); 47 button.addEventListener('click', t.step_func(() => { assert_equals(++i, 1) }), false); 48 button.setAttribute('onclick', uncalled); // event handler listener is registered here 49 button.addEventListener('click', t.step_func(() => { assert_equals(++i, 3) }), false); 50 button.onclick = t.step_func(() => { assert_equals(++i, 2); }); 51 button.addEventListener('click', t.step_func(() => { assert_equals(++i, 4) }), false); 52 button.click() 53 assert_equals(button.getAttribute("onclick"), uncalled) 54 assert_equals(i, 4); 55 }, "Event handler listeners should be registered when they are first set to an object value.");