1<!DOCTYPE html> 2<meta charset="UTF-8"> 3<title>Throwing in event listeners</title> 4<script src="/resources/testharness.js"></script> 5<script src="/resources/testharnessreport.js"></script> 6<div id="log"></div> 7<script> 8setup({allow_uncaught_exception:true}) 9 10test(function() { 11 var errorEvents = 0; 12 window.onerror = this.step_func(function(e) { 13 assert_equals(typeof e, 'string'); 14 ++errorEvents; 15 }); 16 17 var element = document.createElement('div'); 18 19 element.addEventListener('click', function() { 20 throw new Error('Error from only listener'); 21 }); 22 23 element.dispatchEvent(new Event('click')); 24 25 assert_equals(errorEvents, 1); 26}, "Throwing in event listener with a single listeners"); 27 28test(function() { 29 var errorEvents = 0; 30 window.onerror = this.step_func(function(e) { 31 assert_equals(typeof e, 'string'); 32 ++errorEvents; 33 }); 34 35 var element = document.createElement('div'); 36 37 var secondCalled = false; 38 39 element.addEventListener('click', function() { 40 throw new Error('Error from first listener'); 41 }); 42 element.addEventListener('click', this.step_func(function() { 43 secondCalled = true; 44 }), false); 45 46 element.dispatchEvent(new Event('click')); 47 48 assert_equals(errorEvents, 1); 49 assert_true(secondCalled); 50}, "Throwing in event listener with multiple listeners"); 51</script> 52