1 <body> 2 <p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=3387">bug 3387</a>: 3 Redundant keydown, keypress, keyup events sent for arrow keys.</p> 4 5 <p>Try pressing arrow keys, PgUp/PgDown/Home/End, Esc, or function keys. 6 The test passes if the box below doesn't turn red.<p> 7 8 <div id="result" style="width:100px; height:100px; background-color:blue;"></div> 9 10 <script> 11 12 var console_messages = document.createElement("ol"); 13 document.body.appendChild(console_messages); 14 15 window.onkeydown = registerWindow; 16 window.onkeypress = registerWindow; 17 window.onkeyup = registerWindow; 18 19 document.onkeydown = registerDocument; 20 document.onkeypress = registerDocument; 21 document.onkeyup = registerDocument; 22 23 document.body.onkeydown = registerBody; 24 document.body.onkeypress = registerBody; 25 document.body.onkeyup = registerBody; 26 27 document.documentElement.onkeydown = registerDocumentElement; 28 document.documentElement.onkeypress = registerDocumentElement; 29 document.documentElement.onkeyup = registerDocumentElement; 30 31 var bodyKeyDownCount = 0; 32 var documentElementKeyDownCount = 0; 33 var windowKeyDownCount = 0; 34 var documentKeyDownCount = 0; 35 36 function log(message) 37 { 38 var item = document.createElement("li"); 39 item.appendChild(document.createTextNode(message)); 40 item.style.fontSize = '8px'; 41 console_messages.appendChild(item); 42 } 43 44 function registerBody(e) 45 { 46 if ((e.type == "keydown" && ++bodyKeyDownCount != 1) 47 || (e.type == "keyup" && --bodyKeyDownCount != 0)) 48 document.getElementById("result").style.backgroundColor = "red"; 49 50 if (!e) 51 e = window.event; 52 log("body: " + e.type); 53 return true; 54 } 55 56 function registerDocumentElement(e) 57 { 58 if ((e.type == "keydown" && ++documentElementKeyDownCount != 1) 59 || (e.type == "keyup" && --documentElementKeyDownCount != 0)) 60 document.getElementById("result").style.backgroundColor = "red"; 61 62 if (!e) 63 e = window.event; 64 log("documentElement: " + e.type); 65 return true; 66 } 67 68 function registerDocument(e) 69 { 70 if ((e.type == "keydown" && ++documentKeyDownCount != 1) 71 || (e.type == "keyup" && --documentKeyDownCount != 0)) 72 document.getElementById("result").style.backgroundColor = "red"; 73 74 if (!e) 75 e = window.event; 76 log("document: " + e.type); 77 return true; 78 } 79 80 function registerWindow(e) 81 { 82 if ((e.type == "keydown" && ++windowKeyDownCount != 1) 83 || (e.type == "keyup" && --windowKeyDownCount != 0)) 84 document.getElementById("result").style.backgroundColor = "red"; 85 86 if (!e) 87 e = window.event; 88 log("window: " + e.type); 89 return true; 90 } 91 92 </script> 93 </body> 94