gpt4 book ai didi

JavaScript `event.preventDefault()` 对于 Windows 中的 `alt+tab` 是无用的

转载 作者:搜寻专家 更新时间:2023-10-31 22:11:16 24 4
gpt4 key购买 nike

我在一个项目中接到一个新的需求,我们必须阻止Windows的alt+tab热键来防止窗口之间的切换。

经过一番努力,我可以阻止alt,ctrl,tab,shift,ctrl+s,ctrl+c,ctrl+v 等,但我无法阻止 alt+tab,无论是 Firefox 还是 Chrome。

我在 MDN 中搜索,终于找到了这个:prevent the default action of the corresponding key down event in Chrome

所以我的猜测是alt+tab是Windows系统的热键而不是浏览器的。而event.preventDefault()只能阻止浏览器对应的事件。

谁有更详细的解释?

以下是我的代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
document.addEventListener("keydown", function(e) {
//tab keyCode===9
//I hope to prevent alt+tab event action in windows
if (e.altKey && e.keyCode === 9) {
e.preventDefault(); //why not come in?
}
}, false)
</script>
</body>
</html>

最佳答案

event.preventDefault() can only prevent the events corresponding to the browser.

更准确地说,event.preventDefault()只能阻止浏览器接收到并决定传递给网页的事件的 Action 。

Alt+Tab 完全在浏览器之外处理,由 Windows DWM .在大多数情况下,此快捷方式根本不会传递到桌面应用程序。由于 Web 浏览器不会特意捕获它,因此它们根本不会“看到”该事件。同样的原则适用于 Ctrl+Alt+Del。

某些浏览器还会“保护”某些键盘快捷键,永远不会将它们传递给网页,以便用户可以依赖这些快捷键始终保持一致的行为。例如,Chrome 将保护映射到以下命令之一的任何键盘事件:

  • 关闭选项卡(Ctrl+W)
  • 关闭窗口(Ctrl+Shift+W)
  • 新隐身窗口 (Ctrl+Shift+N)
  • 新标签页(Ctrl+T)
  • 新窗口(Ctrl+N)
  • 恢复选项卡 (Ctrl+Shift+T)
  • 选择下一个选项卡(Ctrl+Tab、Ctrl+PageDown)
  • 选择上一个选项卡(Ctrl+Shift+Tab、Ctrl+PageUp)
  • 退出(Alt+F4、Cmd+Q)

关于JavaScript `event.preventDefault()` 对于 Windows 中的 `alt+tab` 是无用的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40434142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com