Pag*_*eYe 3 html javascript keypress keydown
我在一个项目中收到了一个新要求,我们必须阻止Windows' alt+ tab热键来阻止窗口之间的切换.
很多的努力后,我可以预防alt,ctrl,tab,shift,ctrl+ s,ctrl+ c,ctrl+ v等,但我不能阻止alt+ tab,无论是Firefox或Chrome.
我在MDN中搜索并最终发现:阻止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>
Run Code Online (Sandbox Code Playgroud)
event.preventDefault()只能阻止与浏览器对应的事件.
更确切地说,event.preventDefault()只能阻止浏览器接收并决定传递到网页的事件的动作.
Alt + Tab完全由Windows DWM在浏览器外部处理.在大多数情况下,此快捷方式根本不会传递给桌面应用程序.由于Web浏览器不会自行捕获它,因此它们根本不会"看到"该事件.同样的原则适用于Ctrl + Alt + Del.
一些浏览器也会"保护"某些键盘快捷键,因为它们从未将它们传递到网页,因此用户可以依赖这些快捷键始终保持一致的行为.例如,Chrome会保护映射到以下命令之一的任何键盘事件:
| 归档时间: |
|
| 查看次数: |
1359 次 |
| 最近记录: |