Spec-Zone.ru › Web APIs

KeyboardEvent: метод getModifierState()

Базовая поддержка Широко распространена *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

* Некоторые части этой функции могут иметь разный уровень поддержки.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Метод KeyboardEvent.getModifierState() возвращает текущее состояние указанной модификаторной клавиши: true если модификатор активен (то есть клавиша модификатора нажата или заблокирована), в противном случае, false.

Синтаксис

getModifierState(key)

Параметры

key

Значение модификаторной клавиши. Значение должно быть одним из значений KeyboardEvent.key, которые представляют модификаторные клавиши, или строкой "Accel" Устаревший . Регистр имеет значение.

Возвращаемое значение

Булево значение.

Модификаторные клавиши в Firefox

Когда getModifierState() возвращает true в Firefox?

Windows Linux (GTK) Mac Android 2.3 Android 3.0 или более поздняя версия
"Alt" Нажата клавиша Alt или AltGr Нажата клавиша Alt Нажата клавиша ⌥ Option Нажата клавиша Alt или option
"AltGraph" Одновременно нажаты клавиши Alt и Ctrl, или нажата клавиша AltGr Нажата клавиша Level 3 Shift (или Level 5 Shift) Нажата клавиша ⌥ Option ❌ Не поддерживается ❌ Не поддерживается
"CapsLock" Включён индикатор ⇪ Caps Lock ❌ Не поддерживается Включен CapsLock
"Control" Нажата клавиша Ctrl или AltGr Нажата клавиша Ctrl Нажата клавиша control Нажата клавиша menu Нажата клавиша Ctrl, control или menu
"Fn" ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается Нажата клавиша Function, но мы не уверены, какая клавиша активирует модификатор. Клавиша Fn на клавиатуре Mac не вызывает это состояние.
"FnLock" ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается
"Hyper" ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается
"Meta" Нажата клавиша ⊞ Windows Logo (с Firefox 118) Нажата клавиша Meta Нажата клавиша ⌘ Command ❌ Не поддерживается Нажата клавиша ⊞ Windows Logo или command
"NumLock" Включён индикатор Num Lock Нажата клавиша на цифровом блоке ❌ Не поддерживается Включен NumLock
"OS" Нажата клавиша ⊞ Windows Logo (до Firefox 118) Нажата клавиша Super или Hyper (обычно сопоставлена с ⊞ Windows Logo) ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается
"ScrollLock" Включён индикатор Scroll Lock Включён индикатор Scroll Lock, но обычно это не поддерживается платформой ❌ Не поддерживается ❌ Не поддерживается Включен ScrollLock
"Shift" Нажата клавиша ⇧ Shift
"Super" ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается
"Symbol" ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается
"SymbolLock" ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается ❌ Не поддерживается
  • На других платформах могут поддерживаться "Alt", "Control" и "Shift".
  • Все модификаторы (кроме "FnLock", "Hyper", "Super" и "Symbol", которые определяются после реализации этой функции в Firefox) всегда поддерживаются для небезопасных событий в Firefox. Это не зависит от платформы.

"Accel" виртуальный модификатор

Примечание: Виртуальный модификатор "Accel" фактически устарел в текущих черновиках спецификации DOM3 Events.

getModifierState() также принимает устаревший виртуальный модификатор "Accel". event.getModifierState("Accel") возвращает true , когда по крайней мере один из KeyboardEvent.ctrlKey или KeyboardEvent.metaKey true.

В старых реализациях и устаревших спецификациях, она возвращала true когда модификатор, который является типичной клавишей для сочетания клавиш, нажат. Например, на Windows нажатие клавиши Ctrl может привести к возврату true. Однако на Mac нажатие клавиши ⌘ Command может привести к возврату true. Обратите внимание, что какая клавиша-модификатор приводит к возвращению true зависит от платформы, браузера и настроек пользователя. Например, пользователи Firefox могут настроить это с помощью предпочтения "ui.key.accelKey".

Примеры

function handleKeyboardEvent(event) {
  // Ignore if following modifier is active.
  if (
    event.getModifierState("Fn") ||
    event.getModifierState("Hyper") ||
    event.getModifierState("OS") ||
    event.getModifierState("Super") ||
    event.getModifierState("Win") /* hack for IE */
  ) {
    return;
  }

  // Also ignore if two or more modifiers except Shift are active.
  if (
    event.getModifierState("Control") +
      event.getModifierState("Alt") +
      event.getModifierState("Meta") >
    1
  ) {
    return;
  }

  // Handle shortcut key with standard modifier
  if (event.getModifierState("Accel")) {
    switch (event.key.toLowerCase()) {
      case "c":
        if (event.getModifierState("Shift")) {
          // Handle Accel + Shift + C
          event.preventDefault(); // consume the key event
        }
        break;
      case "k":
        if (!event.getModifierState("Shift")) {
          // Handle Accel + K
          event.preventDefault(); // consume the key event
        }
        break;
    }
    return;
  }

  // Do something different for arrow keys if ScrollLock is locked.
  if (
    (event.getModifierState("ScrollLock") ||
      event.getModifierState("Scroll")) /* hack for IE */ &&
    !event.getModifierState("Control") &&
    !event.getModifierState("Alt") &&
    !event.getModifierState("Meta")
  ) {
    switch (event.key) {
      case "ArrowDown":
      case "Down": // hack for IE and old Firefox
        event.preventDefault(); // consume the key event
        break;
      case "ArrowLeft":
      case "Left": // hack for IE and old Firefox
        // Do something different if ScrollLock is locked.
        event.preventDefault(); // consume the key event
        break;
      case "ArrowRight":
      case "Right": // hack for IE and old Firefox
        // Do something different if ScrollLock is locked.
        event.preventDefault(); // consume the key event
        break;
      case "ArrowUp":
      case "Up": // hack for IE and old Firefox
        // Do something different if ScrollLock is locked.
        event.preventDefault(); // consume the key event
        break;
    }
  }
}

Примечание: Хотя в этом примере используется .getModifierState() с "Alt", "Control", "Meta" и "Shift", использование event.altKey, event.ctrlKey, event.metaKey и event.shiftKey может быть предпочтительнее.

Спецификации

Спецификация
UI Events
# dom-keyboardevent-getmodifierstate

Совместимость браузеров

Стационарные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
getModifierState 30 12 15 17 10.1 30 15 18 10.3 2.0 4.4
key_parameter_accel 48 ≤79 32 35 Нет 48 32 35 Нет 5.0 48
key_parameter_alt 30 12 15 17 10.1 30 15 18 10.3 2.0 4.4
key_parameter_altgraph 48 79 15 35 10.1 48 15 35 10.3 5.0 48
key_parameter_capslock 48 12 15 35 10.1 48 15 35 10.3 5.0 48
key_parameter_control 30 12 15 17 10.1 30 15 18 10.3 2.0 4.4
key_parameter_fn 48 79 15 35 Нет 48 15 35 Нет 5.0 48
key_parameter_meta 30 79 15 17 10.1 30 15 18 10.3 2.0 4.4
key_parameter_numlock 48 ≤79 15 35 Нет 48 15 35 Нет 5.0 48
key_parameter_os 48 7912–79 15 35 Нет 48 15 35 Нет 5.0 48
key_parameter_scrolllock 48 7912–79 15 35 Нет 48 15 35 Нет 5.0 48
key_parameter_shift 30 12 15 17 10.1 30 15 18 10.3 2.0 4.4
key_parameter_symbol 48 79 Нет 35 Нет 48 Нет 35 Нет 5.0 48

См. также

  • Раздел KeyboardEvent к которому относится этот метод.
  • MouseEvent.getModifierState

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API