Как захватить CTRL-S без jQuery или любой другой библиотеки?
Как мне сделать захват события CTRL + S на веб-странице?
Я не хочу использовать jQuery или любую другую специальную библиотеку.
Спасибо за вашу помощь заранее.
Ответы
Ответ 1
Если вы используете только собственный/ванильный JavaScript, это должно привести к результатам, которые вы после:
var isCtrl = false;
document.onkeyup=function(e){
if(e.keyCode == 17) isCtrl=false;
}
document.onkeydown=function(e){
if(e.keyCode == 17) isCtrl=true;
if(e.keyCode == 83 && isCtrl == true) {
//run code for CTRL+S -- ie, save!
return false;
}
}
Что происходит?
Метод onkeydown проверяет, нажата ли клавиша CTRL (key code 17).
Если это так, мы устанавливаем значение isCtrl на true, чтобы пометить его как активируемое и используемое. Мы можем вернуть это значение обратно в false в onkeyup.
Затем мы посмотрим, прилагаются ли какие-либо другие клавиши вместе с клавишей ctrl. В этом примере для ключа S используется key code 83. Вы можете добавить свои собственные методы обработки/обработки данных/сохранения в эту функцию, и мы вернем false, чтобы остановить работу браузера от нажатия клавиши CTRL-S.
Ответ 2
document.onkeydown = function(e) {
if (e.ctrlKey && e.keyCode === 83) {
alert('hello there');
// your code here
return false;
}
};
Вам нужно заменить document
на ваше фактическое поле ввода.
Ответ 3
document.onkeydown = function(e) {
if (e.ctrlKey && e.keyCode === 83) {
alert('strg+s');
}
return false;
};
Некоторые события не могут быть захвачены, поскольку они захватываются системой или приложением.
Ответ 4
Вам не нужно было одновременного, измененного кода, чтобы отразить ваш сценарий
function iskeyPress(e) {
e.preventDefault();
if (e.ctrlKey&&e.keyCode == 83) {
alert("Combination pressed");
}
return false;//To prevent default behaviour
}
Добавьте это к телу
<body onkeyup="iskeypress()">
Ответ 5
Добавьте ярлыки JS-библиотеки и выполните следующий код:
<script src="js/libs/shortcut/shortcut.js" type="text/javascript"></script>
Тогда
shortcut.add("Ctrl+S", function() {
alert("لقد قمت بالصغط على مراقبة مع حرف السين");
});
Ответ 6
Mousetrap - отличная библиотека для этого (8 000+ звезд в Github).
Документация: https://craig.is/killing/mice
// map multiple combinations to the same callback
Mousetrap.bind(['command+s', 'ctrl+s'], function() {
console.log('command s or control s');
// return false to prevent default browser behavior
// and stop event from bubbling
return false;
});