【发布时间】:2021-08-05 17:42:47
【问题描述】:
我在工作中使用网络应用程序,我经常使用的快捷方式之一是 Ctrl+M。但是,我经常打字很快,并且误按了 Ctrl+N,而不是在我的 Web 应用程序中触发操作,而是打开了一个新窗口。我希望能够防止这种情况,但我似乎无法弄清楚如何。到目前为止,我已经尝试在每次页面加载时运行此代码,但它似乎没有做任何事情。 (忽略我只使用一个键的开关这一事实,我还有一些其他自定义 Ctrl 快捷方式不会覆盖正在工作的 Chrome 快捷方式,我只是为了便于阅读而删除了它们)
document.onkeydown = function(e)
{
if(e.ctrlKey === false)
{
return;
}
switch(e.which) {
case 78:
//just to keep from opening a new tab when merging cells
e.preventDefault();
e.stopPropagation();
break;
default:
return;
}
};
【问题讨论】:
-
这是一项浏览器功能 - 不是您可以在应用级别控制的。
-
但是例如,我使用的网络应用程序会覆盖 Ctrl+S 以保存在网络应用程序内部,而不是将原始 HTML 保存到磁盘。 Ctr+N有没有办法做到这一点?
-
@Vld 真正的答案是很多浏览器快捷方式可以被拦截。不幸的是,Ctrl+N 不是其中之一……至少对于 Chrome。您可以更改您的应用,使其使用不同的快捷方式
-
@NullUserException - 实际上我只是感觉很简洁。您可以(尝试)捕获 Ctrl + N 但不能阻止默认行为。老实说,有一个很好的理由 - 如果一个网站拒绝我的默认快捷方式,我会很生气。