我正在创建一个复杂的浏览器内应用程序,我想使用Chrome和/或其他主要浏览器当前使用的一些键盘快捷键。我在网上搜索,找不到覆盖浏览器快捷方式的方法,但是我看到Google表格只是我想要的那种功能:用户可以选择一个选项来覆盖浏览器快捷方式。
Google表格如何完成这项工作?
更新:澄清一下,因为这已经引起了人们的不满:我知道event.preventDefault()。问题在于它似乎不适用于Ctrl + t
(打开新标签)之类的组合键。
答案 0 :(得分:7)
通常的想法是拦截事件并在事件event.preventDefault()
对应于您要覆盖的快捷方式时对其进行调用。例如,以下代码将阻止您按control-1
导航到最左侧的标签:
document.body.addEventListener('keydown', (event) => {
// keyCode 49 corresponds to the "1" key
if(event.keyCode==49 && event.ctrlKey) {
event.preventDefault();
console.log('default action prevented, doing custom action instead');
}
});
body {
background-color: yellow;
}
click me first
根据需要重复任意数量的keyCode和修饰符。