Chrome 扩展:使用 Alt 和 addEventListener('keypress') 添加键盘快捷键

Chrome extension: adding a keyboard shortcut with Alt with addEventListener('keypress')

我正在这样做 open source chrome extension 我想添加一个快捷方式,这样当扩展程序打开并且我按下 Alt+C 时,div 的内容就会被复制到我的剪贴板。

我可以通过简单的方式添加快捷方式 addEventListener:

var inputText = document.getElementById('textareaSource');
    inputText.addEventListener('keypress', function (e) {
        if (e.keyCode == 99) {        
            // alert("You pressed C!");
        }
});

但是显然这种添加快捷方式的方式不允许包含Alt的快捷方式。我试过了,但没有收到任何警报:

if (e.altKey || e.ctrlKey || e.shiftKey)
    alert("you pressed one of the 'Alt', 'Ctrl', or 'Shift' keys")
}

我还可以通过 manifest/background.js 添加快捷方式(在 and this 之后)。这一次,Alt+C 起作用了,但它可以在 Chrome 上随处触发,而不仅仅是在我的扩展程序打开时触发。

有没有办法获得中间立场:添加包含 Alt 的快捷方式,该快捷方式仅在我的扩展程序打开时触发?

keypress 事件不会在按下修改键时触发,此外,现在已弃用。

正如它所说的 on the MDN, you should consider using keydown 事件,它支持您尝试过的方式。

event.keyCode 也已弃用,应改用 event.key

所以这段代码应该可以工作:

var inputText = document.getElementById('textareaSource');
    inputText.addEventListener('keydown', function (e) {
        if (e.key == "c" && e.altKey) {        
            // alert("You pressed Alt + C!");
        }
});