94 lines
2.9 KiB
HTML
94 lines
2.9 KiB
HTML
<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>
|