【问题标题】:How does Google Sheets override browser shortcuts?Google 表格如何覆盖浏览器快捷方式?
【发布时间】:2018-10-12 07:36:39
【问题描述】:

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

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

更新:澄清一下,因为这得到了一些反对意见:我知道 event.preventDefault()。问题是它似乎不适用于 Ctrl + t 之类的组合键(打开新标签)。

【问题讨论】:

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


    【解决方案1】:

    一般的想法是拦截事件并调用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

    重复任意数量的 keyCodes 和修饰符。

    【讨论】:

    • 我尝试将您的代码添加到我的应用程序中,虽然它适用于 Ctrl + 1,但不适用于 Ctrl + t。不过我也注意到 Google 表格不会覆盖 Ctrl + t,所以它可能是浏览器快捷方式无法覆盖。
    • 嗯,有趣。所以Ctrl + 1不知何故在与Ctrl + t不同的领域。我想知道为什么。
    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 2019-04-14
    • 2017-09-01
    • 2014-03-21
    • 1970-01-01
    相关资源
    最近更新 更多