文章关键字 ‘onkeydown’

火狐(FireFox)中的onkeydown事件

2010年11月27日,星期六

昨天在Kaisir.Wang的文章里留言,我在输入C++的大写字母C时习惯性的按下了Shift+c,竟然弹出了个Hello World窗口。按照他的回复,这是他博客里的彩蛋。汗,一点也不好玩。

然后我把那段JavaScript代码找出来了,如下:

document.onkeydown=onkey;
function onkey(){
    if ((event.shiftKey)&&(event.keyCode==67))
    alert("Hello World!");
}

他后面又回复说这代码在火狐下无效,于是我Google了一下,原来是因为onkeydown事件在IE和FireFox的实现不一样。

Browser differences: Internet Explorer uses event.keyCode to retrieve the character that was pressed and Netscape/Firefox/Opera uses event.which.

IE用event.keyCode返回按下的按键,而Netscape/Firefox/Opera用的是event.which。

原因已找到,把代码稍微修改一下:

document.onkeydown = function(e) {
    e = e ? e : window.event;
    var keyCode = e.which ? e.which : e.keyCode;
    if(e.shiftKey && keyCode == 67)
        alert("Hello World!");
}

我还专门装了个FireFox测试,通过。

参考链接:onkeypress Event