javascript 中无法阻止的键盘快捷键

问题描述 投票:0回答:1

正如标题所示,我想知道 - 在现代浏览器中,哪些键盘快捷键不能被 javascript 阻止?这是浏览器依赖还是系统依赖?

到目前为止,我已经得到了

Ctrl+N
Ctrl+Shift+N
Ctrl+T
Ctrl+Shift+T
Ctrl+W
Ctrl+Shift+W
,全部来自 Google Chrome。然后是带有 windows 键的标准 Windows 快捷键,如 windows 键本身、
winkey+R
winkey+S
等,还有
Ctrl+Shift+Escape
。有没有办法知道哪些键盘快捷键会导致 javascript 无法阻止的情况?

我想我的问题可以归结为:如果

event
是键盘事件,那么
event.preventDefault();
实际上会阻止什么?

编辑 让我们在这里列出一个清单:

  • Ctrl+N
  • Ctrl+Shift+N
  • Ctrl+T
  • Ctrl+Shift+N
  • Ctrl+W
  • Ctrl+Shift+W
  • winkey + anything?
  • Ctrl+Shift+Escape
  • Ctrl+Alt-Delete
    (由 Psi 添加)
  • Alt+F4
  • Escape
    F11
    (全屏)(由 zer00ne 添加)
  • Ctrl+F4
    Ctrl+Tab
    Ctrl+Shift+Tab
    (由本杰明·彭尼添加)
javascript events browser preventdefault
1个回答
0
投票

您需要使用事件的

capturing
阶段来处理并防止其默认行为。

但是!您无法在 safari 中覆盖 CTRL+R、CTRL+W 或 CMD 事件。

防止用户刷新页面的更好方法是 window.onbeforeunload = 函数(事件) {}

例如

function preventFn(event) {
    if (event.keyCode === YOU_KEY_CODE && event.metaKey) {
        event.preventDefault();
        event.stopPropagation();
    }
}
document.addEventListener('keydown', preventFn, true); // true means use capture phase of event

例如,您可以使用高级库进行快捷方式管理

热键 - 强大

堆栈快捷方式 - 小而简单

附注而不是

event.metaKey
使用您需要的内容。文档这里

© www.soinside.com 2019 - 2024. All rights reserved.