JS властивість Event.keydown


Загальний опис

Подія keydown спрацьовує в момент натискання будь-якої клавіші на клавіатурі. Вона є однією з основних подій для обробки введення з клавіатури і часто використовується для створення інтерактивних інтерфейсів, де дії користувача можуть бути пов'язані з певними клавішами. Подія keydown спрацьовує до того, як символ з'являється у полі введення, на відміну від події keypress, яка запускається лише для символів, які можуть бути відображені. Важливою особливістю цієї події є можливість обробляти клавіші, що не генерують символи, такі як Ctrl, Shift, Alt, Arrow та інші.

Подія надає об'єкт event, який містить інформацію про натиснуту клавішу. Основні властивості, які можуть бути корисними:

  • event.key – повертає символ або назву клавіші (наприклад, "a", "ArrowUp").
  • event.code – повертає фізичний код клавіші, наприклад, "KeyA".
  • event.ctrlKey, event.shiftKey, event.altKey – булеві значення, які показують, чи натиснуті відповідні клавіші-модифікатори.

Приклад використання події keydown для виведення натиснутої клавіші в консоль:

document.addEventListener('keydown', function(event) {
  console.log('Натиснута клавіша: ' + event.key);
});

Також можна використовувати подію keydown, щоб заборонити введення певних символів:

document.addEventListener('keydown', function(event) {
  if (event.key === 'Tab') {
    event.preventDefault(); // Забороняє дію клавіші Tab
  }
});

Використовуючи подію keydown, можна легко створювати гарячі клавіші для керування елементами на сторінці або створювати інтерактивні ігри, де реакція на клавіатуру важлива. Важливо зазначити, що ця подія спрацьовує при кожному повторному натисканні клавіші, якщо її утримувати.

автор: Bond

Порада

При обробці цифрових клавіш звертайте увагу на відмінності між основними клавішами та цифровим блоком. Використовуйте event.code для відрізнення, наприклад, між Digit1 та Numpad1.

автор: Bond
Порада

Будьте уважні з фізичними кодами клавіш (event.code), оскільки вони залежать від розкладки клавіатури. Наприклад, код клавіші KeyA не змінюється при перемиканні розкладки, тоді як значення event.key зміниться.

автор: Bond
Порада

Подія keydown часто використовується в ігрових сценаріях для керування персонажами. Але важливо правильно обробляти довгі натискання клавіш, щоб уникнути багаторазових викликів події при утриманні клавіші.

автор: Bond

Синтаксис

element.addEventListener('keydown', function(event) {
  // Ваш код тут
});

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
66 57 11.1 53 16
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
66 66 57 11.3
Підтримка: серверні переглядачі
Переглядач Node.js Deno
15.0.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

Цей приклад демонструє, як заборонити стандартну дію браузера для комбінації клавіш Ctrl + S, яка зазвичай викликає діалог збереження сторінки. Ви можете виконати власну дію, наприклад, збереження контенту в локальному сховищі.

document.addEventListener('keydown', function(event) {
  if (event.ctrlKey && event.key === 's') {
    event.preventDefault();
    console.log('Користувач натиснув Ctrl + S, але сторінка не буде збережена.');
  }
});
автор: Bond

У цьому прикладі за допомогою події keydown користувач може керувати рухом зеленого квадрата по екрану, натискаючи клавіші-стрілки. Кожне натискання переміщує квадрат на 10 пікселів у відповідному напрямку (вгору, вниз, ліворуч або праворуч), при цьому рух обмежений межами контейнера.

автор: Bond

У цьому прикладі подія keydown використовується для керування положенням персонажа за допомогою клавіш-стрілок. При натисканні клавіші "ArrowRight" персонаж рухається вправо, а при натисканні "ArrowLeft" — вліво. Це базовий приклад для розуміння, як створювати ігрові механіки з використанням клавіатури.

let positionX = 0;

document.addEventListener('keydown', function(event) {
  if (event.key === 'ArrowRight') {
    positionX += 10;
  } else if (event.key === 'ArrowLeft') {
    positionX -= 10;
  }
  console.log('Позиція персонажа: ' + positionX);
});
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід