<body> <p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=3387">bug 3387</a>: Redundant keydown, keypress, keyup events sent for arrow keys.</p> <p>Try pressing arrow keys, PgUp/PgDown/Home/End, Esc, or function keys. The test passes if the box below doesn't turn red.<p> <div id="result" style="width:100px; height:100px; background-color:blue;"></div> <script> var console_messages = document.createElement("ol"); document.body.appendChild(console_messages); window.onkeydown = registerWindow; window.onkeypress = registerWindow; window.onkeyup = registerWindow; document.onkeydown = registerDocument; document.onkeypress = registerDocument; document.onkeyup = registerDocument; document.body.onkeydown = registerBody; document.body.onkeypress = registerBody; document.body.onkeyup = registerBody; document.documentElement.onkeydown = registerDocumentElement; document.documentElement.onkeypress = registerDocumentElement; document.documentElement.onkeyup = registerDocumentElement; var bodyKeyDownCount = 0; var documentElementKeyDownCount = 0; var windowKeyDownCount = 0; var documentKeyDownCount = 0; function log(message) { var item = document.createElement("li"); item.appendChild(document.createTextNode(message)); item.style.fontSize = '8px'; console_messages.appendChild(item); } function registerBody(e) { if ((e.type == "keydown" && ++bodyKeyDownCount != 1) || (e.type == "keyup" && --bodyKeyDownCount != 0)) document.getElementById("result").style.backgroundColor = "red"; if (!e) e = window.event; log("body: " + e.type); return true; } function registerDocumentElement(e) { if ((e.type == "keydown" && ++documentElementKeyDownCount != 1) || (e.type == "keyup" && --documentElementKeyDownCount != 0)) document.getElementById("result").style.backgroundColor = "red"; if (!e) e = window.event; log(" documentElement: " + e.type); return true; } function registerDocument(e) { if ((e.type == "keydown" && ++documentKeyDownCount != 1) || (e.type == "keyup" && --documentKeyDownCount != 0)) document.getElementById("result").style.backgroundColor = "red"; if (!e) e = window.event; log(" document: " + e.type); return true; } function registerWindow(e) { if ((e.type == "keydown" && ++windowKeyDownCount != 1) || (e.type == "keyup" && --windowKeyDownCount != 0)) document.getElementById("result").style.backgroundColor = "red"; if (!e) e = window.event; log(" window: " + e.type); return true; } </script> </body>