Как отключить сочетание клавиш Ctrl+U на сайте с помощью JavaScript?
Отключение сочетания клавиш Ctrl+U на веб-сайте — это распространённая задача, которую решают разработчики для защиты исходного кода страницы от просмотра неподготовленными пользователями. Хотя полностью защитить код невозможно, так как HTML, CSS и JavaScript всегда доступны через инструменты разработчика браузера, базовое отключение горячих клавиш может затруднить доступ для обычных посетителей.
Для отключения Ctrl+U используется обработчик события keydown или keyup. Необходимо проверить, нажата ли клавиша U (код 85) одновременно с клавишей Ctrl, и предотвратить стандартное действие браузера методом preventDefault().
Пример базового кода:
javascript
document.addEventListener(‘keydown’, function(event) {
if (event.ctrlKey && event.keyCode === 85) {
event.preventDefault();
return false;
}
});
В этом коде мы добавляем слушатель события на весь документ. Когда пользователь нажимает любую клавишу, функция проверяет два условия: нажата ли клавиша Ctrl (event.ctrlKey) и является ли нажатая клавиша буквой U (keyCode 85). Если оба условия истинны, метод preventDefault() блокирует стандартное действие браузера — открытие исходного кода страницы.
Для более современного подхода рекомендуется использовать свойство event.key вместо устаревшего keyCode:
javascript
document.addEventListener(‘keydown’, function(event) {
if (event.ctrlKey && (event.key === ‘u’ || event.key === ‘U’)) {
event.preventDefault();
return false;
}
});
Можно также добавить дополнительную защиту, блокируя другие популярные сочетания клавиш, такие как Ctrl+Shift+I (инструменты разработчика), Ctrl+Shift+J (консоль), Ctrl+S (сохранение страницы) и F12:
javascript
document.addEventListener(‘keydown’, function(event) {
// Блокировка Ctrl+U
if (event.ctrlKey && (event.key === ‘u’ || event.key === ‘U’)) {
event.preventDefault();
return false;
}
// Блокировка Ctrl+Shift+I
if (event.ctrlKey && event.shiftKey && (event.key === ‘i’ || event.key === ‘I’)) {
event.preventDefault();
return false;
}
// Блокировка F12
if (event.keyCode === 123) {
event.preventDefault();
return false;
}
});
Важно понимать, что такая защита не является абсолютной. Опытные пользователи всегда смогут получить доступ к исходному коду через меню браузера, расширения или отключив JavaScript. Эта мера лишь создаёт дополнительный барьер для случайных посетителей и демонстрирует намерение владельца сайта ограничить доступ к коду.