火狐(FireFox)中的onkeydown事件

标签: , ,

昨天在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

随机文章:

  1. 用JavaScript实现PHP的urlencode函数
  2. JavaScript中的闭包(closures)
  3. VBS中的SetLocale函数到底有什么用?
  4. MySQL中CHAR和VARCHAR的区别
  5. 在C语言中嵌入执行VBS

11 条评论 发表在“火狐(FireFox)中的onkeydown事件”上

  1. Dawnson说道:

    能坚持用这个模板写这么多日志,你真让我佩服!

  2. linkanyway说道:

    不错,转了!

  3. linkanyway说道:

    demon是不是我的主题好看啊!哇嘎嘎

  4. Kaisir.Wang说道:

    哈 原来是这么回事 我发现我最近懒了 很多问题不想刨根问底了 你这篇日志不单单解决了火狐的案件问题 还给我敲了敲警钟啊 Fighting啊Fighting!

  5. CY说道:

    不知道为什么现在火狐不支持e.which了,用这个还是没法通过测试QAQ

  6. cyw说道:

    我想问下,那个e我在其他地方怎么用啊,这个e就是event吧

  7. cyw说道:

    我其他地方死活获取不到,我前端不太明白。。

留下回复