Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中不可修改的键盘快捷键_Javascript_Events_Browser_Preventdefault - Fatal编程技术网

javascript中不可修改的键盘快捷键

javascript中不可修改的键盘快捷键,javascript,events,browser,preventdefault,Javascript,Events,Browser,Preventdefault,正如标题所示,我想知道——在现代浏览器中,哪些键盘快捷键是javascript无法阻止的?这是浏览器相关的还是系统相关的 到目前为止,我已经有了Ctrl+N,Ctrl+Shift+N,Ctrl+T,Ctrl+Shift+T,Ctrl+W,Ctrl+Shift+W,所有这些都来自谷歌浏览器。然后是带有windows键的标准windows快捷方式,如windows键本身、winkey+R、winkey+s,等等,还有Ctrl+Shift+Escape。有没有办法知道哪些键盘快捷键会导致javascr

正如标题所示,我想知道——在现代浏览器中,哪些键盘快捷键是javascript无法阻止的?这是浏览器相关的还是系统相关的

到目前为止,我已经有了
Ctrl+N
Ctrl+Shift+N
Ctrl+T
Ctrl+Shift+T
Ctrl+W
Ctrl+Shift+W
,所有这些都来自谷歌浏览器。然后是带有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+什么吗?
  • Ctrl+Shift+Escape
  • Ctrl+Alt Delete
    (由Psi添加)
  • Alt+F4
  • Escape
    F11
    (全屏)(由zer00ne添加)

您需要使用
捕获事件的
阶段来处理和防止其默认行为

但是!不能在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
例如,您可以使用高级库进行快捷方式管理

-有力的

-小巧方便


p、 使用您需要的内容,而不是
event.metaKey
。文档

Ctrl+Alt+Del
肯定也不会被阻止^^事实上,它不会,就像
Alt+F4
,而且可能还有更多的文档,我想你不会找到完整的列表,你唯一能做的就是测试它们。如果你做了,在文档中发布它:如果它同时依赖于浏览器和系统,那将需要大量的测试;肯定有更简单的方法,对吧?也许你可以创建一个javascript捕捉所有键盘事件,并创建一个外部脚本(比如vb脚本)向浏览器击键。我不知道,但是,如果你能检测到它是否是可以预防的。