现在是深夜,我已经落后于最后期限,我正在努力解决一个对我来说似乎非常非常奇怪的问题。也许这很明显我错过了,因为我累了,但我不知道......无论如何这是我的测试用例:
<!doctype html>
<html>
<head>
<script type="text/javascript">
function NoEsc(e)
{
e = e||window.event;
var k = e.keyCode||e.which;
if (k!=27) return true;
var s = e.target||e.srcElement;
s.value = "ESCAPE PRESSED!";
//alert("It works when this alert is shown!");
return false;
}
</script>
</head>
<body onload="document.getElementById('in1').onkeydown=NoEsc;">
<input type="text" id="in1" value="ORIGINAL VALUE">
</body>
</html>
这个想法是,在我的页面上,按 ESC 不会重置整个表单,只会重置具有焦点的元素。对于上面的测试用例,我只是让 ESC 手动将输入元素中的文本设置为“ESCAPE PRESSED!”,然后取消 keydown 事件。
在 IE (v9) 中,这非常有效。然而,在 Firefox (v14.0.1) 中,当在输入中按下 ESC 时没有任何反应。 但是,如果我取消注释该行,或者如果我在声明alert
之前在 FireBug 中设置断点,那么它可以完美运行。s.value = "ESCAPE PRESSED!"
我已经为此工作了一两个小时,此时我厌恶地举起双手并将问题发布在这里。我不知道为什么它不起作用。
有人可以帮我吗?我错过了什么明显的东西吗?谢谢。