JavaScript';键控';退出全屏后未触发事件

JavaScript';键控';退出全屏后未触发事件,javascript,fullscreen,keyup,Javascript,Fullscreen,Keyup,我有一个非常奇怪的键控事件行为。JS代码片段已附加。在铬/铬上测试 复制步骤: F11全屏显示 按下A键(保持按下状态) 按F11退出全屏 松开A键 结果-控制台中没有输出行!为什么呢?我希望看到一些东西,但退出全屏似乎会禁用未来的键控事件。在我的例子中,我通过按下一个键开始一项工作,并且需要在释放后停止它。目前它继续运行 问题是-我如何让它工作 那可能是铬/铬的错误吗?我现在已经尝试了Firefox-keyup事件已成功触发 i=0; addEventListener(“keyup”,fun

我有一个非常奇怪的键控事件行为。JS代码片段已附加。在铬/铬上测试

复制步骤:

  • F11全屏显示
  • 按下A键(保持按下状态)
  • 按F11退出全屏
  • 松开A
  • 结果-控制台中没有输出行!为什么呢?我希望看到一些东西,但退出全屏似乎会禁用未来的键控事件。在我的例子中,我通过按下一个键开始一项工作,并且需要在释放后停止它。目前它继续运行

    问题是-我如何让它工作

    那可能是铬/铬的错误吗?我现在已经尝试了Firefox-keyup事件已成功触发

    i=0;
    addEventListener(“keyup”,function()){
    控制台日志(“向上键,+i”);
    i=i+1;
    
    });它在chrome中不起作用,但在firefox中起作用。我想这取决于按下f11时浏览器如何处理按键事件。可能chrome正在事件中使用preventDefault。这个答案解释了为什么会这样:


    似乎焦点丢失。退出全屏后,我需要单击屏幕以获取焦点work@ManosKounelakis,对我来说没有区别。您是否在退出全屏后单击,然后释放键为您打印输出?@Alexey您可能只想从说明中删除步骤1,因为堆栈片段提供了一个屏幕控制台。@TylerRoper,是的,谢谢!内置控制台很好,那我该怎么办?在我的例子中,我通过按下一个键开始一项工作,并且需要在释放后停止它。目前它仍在运行。您可以使用chrome中的fullscreenchange事件,当全屏更改时会触发该事件,如下所述:由于安全原因,我需要在释放密钥后调用JS函数,而不是在退出fullscreenchange后立即调用,如果用户想退出全屏,chrome希望给予用户完全控制权。因此,它取消所有事件,并将控制权交给用户。由于keyup是一个可取消的事件,因此它被取消。因此,无论何时按下f11,您都会丢失事件。很遗憾,你对此无能为力。好的,谢谢你的解释。我发现fullscreenchange也不适用于F11。这么说事情不好了?!