Google表格如何覆盖浏览器快捷方式?

时间:2018-10-12 07:36:40

标签: javascript google-chrome google-sheets keyboard-shortcuts

我正在创建一个复杂的浏览器内应用程序,我想使用Chrome和/或其他主要浏览器当前使用的一些键盘快捷键。我在网上搜索,找不到覆盖浏览器快捷方式的方法,但是我看到Google表格只是我想要的那种功能:用户可以选择一个选项来覆盖浏览器快捷方式。

Google表格如何完成这项工作?

更新:澄清一下,因为这已经引起了人们的不满:我知道event.preventDefault()。问题在于它似乎不适用于Ctrl + t(打开新标签)之类的组合键。

enter image description here

1 个答案:

答案 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和修饰符。