Javascript Keyup工作,而keypress不工作';t香草JS

Javascript Keyup工作,而keypress不工作';t香草JS,javascript,keypress,keyup,Javascript,Keypress,Keyup,我正在重新学习JS,并尝试用vanilla JS制作模态窗口。所以,我的任务是使退出按钮工作,并在按下它时关闭模式。我发现当我在文档上放置“keypress”事件时,它无法工作,而“keyup”工作正常。我找不到确切的信息来解释为什么会这样。我曾经使用e.KeyCode,但发现它已被弃用。因此,我主要有两个问题无法直接回答: 为什么键码不起作用 2021年处理键盘事件的最佳方式是什么 这是代码。Console.log不工作。如果我把keypress改为keyup,一切都会正常 documen

我正在重新学习JS,并尝试用vanilla JS制作模态窗口。所以,我的任务是使退出按钮工作,并在按下它时关闭模式。我发现当我在文档上放置“keypress”事件时,它无法工作,而“keyup”工作正常。我找不到确切的信息来解释为什么会这样。我曾经使用e.KeyCode,但发现它已被弃用。因此,我主要有两个问题无法直接回答:

  • 为什么键码不起作用

  • 2021年处理键盘事件的最佳方式是什么

  • 这是代码。Console.log不工作。如果我把keypress改为keyup,一切都会正常

    document.addEventListener('keypress', function (e) {
      console.log('Event fired');
      if (e.key === "Escape" && !modal.classList.contains('hidden')) {
        closeModal();
      }
    })
    
    提前谢谢

    致以最良好的祝愿

    瓦迪姆

  • 正如您所说,“keyCode”已被弃用,但它仍然有效(请参见下面的示例)
  • 在您的情况下,最好的方法是使用keyup和e.key
  • 您的代码按预期工作(使用任何其他键),但不会为转义触发keypress事件。因此,您只能使用keydown和keyup

    document.addEventListener('keypress',函数(e){
    log('keypress-fired;',e.key);
    })
    文件。添加的文件列表器(“键控”,功能(e){
    log('keyup fired;',e.key);
    如果(e.keyCode=='27')警报('Escape');
    
    })
    在一个关于不工作的问题中,我们寻找的东西之一是产生“不工作”状态的代码。请提供该代码。您可以使用(编辑器工具栏中的图标)来执行此操作。@vdmclcv按键事件根本不触发吗?@SomShekharMukherjee是,看起来像it@biberman我已经更新了我的帖子,提供了代码和一些额外的解释。。谢谢,这正是我的意思。您的意思是按键事件对Esc键不起作用,它是如何起作用的?提前谢谢。是的,看这个。你想用“按键”代替“按键”有什么具体的原因吗?没有,没有具体的原因。我只是想知道为什么按键不起作用,而按键不起作用。我想可能keypress不推荐使用,或者有点不推荐,但是找不到关于它的信息,所以这个问题就出现了。谢谢你的推荐,@biberman