Измените свой код так, чтобы проверка на 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
. Поскольку объект события представляет состояние клавиатуры в момент его выдачи, keyup
проверяет наличие клавиш-модификаторов , когда C равен , выпущен .
Однако, поскольку клавиши-модификаторы обычно нужно нажимать до клавиши, которую они модифицируют, проверки должны выполняться в тот момент, когда клавиши нажимаются .
Итак, вместо этого вам придется использовать событие 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>