JS метод Event.getModifierState()


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

getModifierState – це метод об’єкта KeyboardEvent, який дозволяє дізнатися, чи активована певна модифікаторна клавіша під час події клавіатури (такої як keydown або keyup). Модифікаторні клавіші включають Shift, Control, Alt, Meta та інші, які змінюють поведінку введення клавіш. Метод приймає єдиний параметр, назву клавіші у вигляді рядка (наприклад, 'Shift' або 'Control'), і повертає true, якщо вказана клавіша натиснута, і false, якщо ні.

Це корисний метод для реалізації дій або комбінацій клавіш, які залежать від модифікаторних клавіш. Наприклад, при обробці події keydown можна перевірити, чи натиснута клавіша Control разом з іншою клавішею, і виконати певну дію на основі цього. Таке використання може бути необхідним у додатках, де комбінації клавіш запускають різні команди, подібно до комбінацій Ctrl+C або Ctrl+V для копіювання та вставки.

document.addEventListener('keydown', function(event) {
   if (event.getModifierState('Control') && event.key === 's') {
       event.preventDefault();
       console.log('Збереження файлу ініційоване за допомогою Ctrl+S');
   }
});

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

Крім основних модифікаторних клавіш, getModifierState також підтримує інші спеціальні клавіші, наприклад, CapsLock, NumLock, ScrollLock, що дозволяє визначати статус цих клавіш під час роботи. Метод є зручним для інтерактивних додатків, оскільки дозволяє створити повністю кастомізовану систему шорткатів та спрощує управління в інтерфейсах.

автор: Bond

Порада

Метод добре підходить для роботи зі складними комбінаціями клавіш, наприклад Ctrl+Shift+Alt. Ви можете перевірити послідовність натискань, що спрощує створення інтерфейсів для управління складними функціями.

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

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

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

Якщо виникають проблеми із запуском подій через поєднання клавіш, використовуйте preventDefault() у поєднанні з getModifierState, щоб уникнути стандартних дій браузера, таких як оновлення сторінки при натисканні Ctrl+R.

автор: Bond

Синтаксис

event.getModifierState(key)

Повернення

boolean

Повертає булеве значення (true або false), що вказує, чи перебуває певна клавіша-модифікатор (як-от Shift, Control, Alt або Meta) у натиснутому стані під час події. Якщо вказана клавіша була натиснута, повертається true; якщо не натиснута – false.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
30 15 10.1 17 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 30 15 10.3
Підтримка: серверні переглядачі
Переглядач Node.js Deno
- -

Приклади

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

Цей приклад демонструє використання getModifierState для створення комбінації Ctrl+Shift+Z, що зазвичай використовується для функції "redo" (повторення дії) у додатках. Це корисно, якщо ви хочете додати шорткати для скасування та повторення дій у власному додатку.

document.addEventListener('keydown', function(event) {
   if (event.getModifierState('Control') && event.getModifierState('Shift') && event.key === 'Z') {
       console.log('Скасування змін (redo) виконано за допомогою Ctrl+Shift+Z');
   }
});
автор: Bond

Цей приклад дозволяє користувачеві вводити текст у поле вводу та одночасно утримувати одну з модифікаторних клавіш (Shift, Control або Alt). Залежно від натиснутої клавіші, у блоці результату з'являється повідомлення з відповідним кольором, що вказує на активну модифікаторну клавішу. Це може бути корисним для інтерфейсів, які змінюють функціонал залежно від комбінацій клавіш, наприклад, у текстових редакторах чи додатках з розширеними можливостями вводу.

автор: Bond

У цьому прикладі getModifierState використовується для перевірки, чи активований CapsLock. Це зручно в полях для введення паролів, де відображення повідомлення про активний CapsLock може запобігти помилкам введення, коли користувач забуває, що CapsLock увімкнено.

document.addEventListener('keydown', function(event) {
   if (event.getModifierState('CapsLock')) {
       console.log('Увага: CapsLock активний!');
   }
});
автор: Bond

Коментарі

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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