如何在 Chrome 浏览器按键事件上捕获 `Ctrl+1` 热键?

How to capture `Ctrl+1` hotkey on Chrome browser keydown event?

我现在正在开发一个思维导图操作的网站,现在想做一些热键,让操作更好。

在XMind中,Ctrl+1代表添加一个标签,编号为1,但是我发现keydown事件无法捕获事件。相反,Ctrl+1 导致激活第一个 Chrome 选项卡,即使我调用 e.preventDefault().

所以chrome浏览器的优先级最高所以不会被拦截。如果我想让 Ctrl+1 热键像预期的那样,有什么解决办法吗?

document.addEventListener('keydown', function(e) {
    if (e.ctrlKey && e.code === 'Digit1') {
        // ...
        e.preventDefault()
    }
})

This thread 似乎有一个讨论可能会回答您的问题。

最简单的答案是使用 e.preventDefault(); e.stopPropagation()。希望该帖子能回答您的问题。

document.addEventListener('keydown', function (e) {
    console.log(e.keyCode)
    if (e.ctrlKey && [49, 50, 51].includes(e.keyCode)) {
        e.preventDefault()
        console.log('hahahah')
    }
})