CTRL + C 和关键字键 C ,两个事件同时工作 JavaScript || Jquery

CTRL + C and keyword key C , both events work at same time JavaScript || Jquery

因为我正在为我的网站创建关键字快捷方式,例如按 C 键,它会将我重定向到我想要的任何页面。

但是问题出现了,当我按下 Ctrl+C 组合键时,它会为我复制文本,但也会将我重定向到其他页面。

我尝试创建一个小演示:

 document.onkeyup = function(e) {
     var e = e || window.event; 
    if ((e.which == 67)) {
        alert("C key is pressed");
    }else if ((e.ctrlKey) && (e.which == 67)) {
        alert("Text Copied");
    } 
};
body {
  background-color: #fff;
}
h5{
  text-align:center;
  font-size:20px;
  font-weigt:bold;
}
<h5>Creating Shortcut for Website</h5>
<p>By clicking on <q>C</q> key on Keyboard, your page will reload</p>

希望您能理解。

感谢您的光临。

更改您的代码,以便在检查重定向键之前先检查 Ctrl + C

此外,请注意 KeyboardEvent#which 已弃用,因此您应该改用 KeyboardEvent#key

document.onkeyup = function(e) {
    e = e || window.event; 
    if (e.ctrlKey && e.key === 'c') {
        alert("Text copied");
    }else if (e.key === 'c') {
        alert("C key is pressed");
    }
};
body {
  background-color: #fff;
}
h5{
  text-align:center;
  font-size:20px;
  font-weigt:bold;
}
<h5>Creating Shortcut for Website</h5>
<p>By clicking on <q>C</q> key on Keyboard, your page will reload</p>

然而,这并不总是奏效。

如果您执行以下操作:

Ctrl down
C down
C up
Ctrl up

...那么它将起作用,但如果序列是(这也会触发复制操作):

Ctrl down
C down
Ctrl up
C up

...那就不会了

为什么?

问题出在 keyup 事件本身。由于事件对象表示事件发出时的键盘状态,因此 keyupC 释放时检查修改键 .

但是,由于修改键通常必须在之前被按下,所以检查应该在按下[=]时进行63=].

因此,您必须改用 keydown 事件:

document.onkeydown = function(e) {
    e = e || window.event; 
    if (e.ctrlKey && e.key === 'c') {
        alert("Text copied");
    }else if (e.key === 'c') {
        alert("C key is pressed");
    }
};
body {
  background-color: #fff;
}
h5{
  text-align:center;
  font-size:20px;
  font-weigt:bold;
}
<h5>Creating Shortcut for Website</h5>
<p>By clicking on <q>C</q> key on Keyboard, your page will reload</p>