如何在不从文本字段获取输入的情况下制作快捷键

How do I make a shortcut key WITHOUT getting input from text fields

我是 Javascript 的新手,所以我决定为 m.youtube 创建一个快捷键用户脚本。 它确实有效,但是当我在文本字段中使用该快捷方式(Ctrl+Z 撤消文本)来编写评论时,会发生这种情况

我无法通过 google 搜索或尝试在论坛上找到任何帮助,我可能使用了错误的搜索词。


当前代码

$(function(){
    document.onkeydown = function(evt) {
        evt = evt || window.event;
        if (evt.ctrlKey && evt.keyCode == 90) {
            alert("Ctrl-Z");
        }
    };
});

目标: 当我按下快捷键时,我不想在文本字段中出现指向 运行 的快捷方式。

您可以检查事件目标是否为输入类型。 试试这个:

$(function() {
    document.onkeydown = function(evt) {
        evt = evt || window.event;

        if (evt.ctrlKey && evt.keyCode == 90) {
            if (!(evt.target instanceof HTMLTextAreaElement) && !(evt.target instanceof HTMLInputElement)) {
                alert("Ctrl-Z");
            }
        }
    };
});

function check () {
        document.onkeydown = function(evt) {
            evt = evt || window.event;
            console.log(evt.target)
            if (evt.ctrlKey && evt.keyCode == 90) {
                if (!(evt.target instanceof HTMLTextAreaElement) && !(evt.target instanceof HTMLInputElement)) {
                    alert("Ctrl-Z");
                }
            }
        };
    }
    
    check()
<textarea id="w3review" name="w3review" rows="4" cols="50">
  hello
  </textarea>
  <input type="text" >

如果事件目标不是您输入的类型 alert("Ctrl-Z");