Назад

February 7, 2025

πŸ” πŸ”’ JavaScript: Π―ΠΊ ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΈΡ‚ΠΈ, Ρ‡ΠΈ ΡƒΠ²Ρ–ΠΌΠΊΠ½Π΅Π½ΠΈΠΉ Caps Lock Ρƒ користувача

πŸ” ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

Π‘ΡƒΠ΄ΡŒ-Ρ…Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π²ΠΈΠΏΠ°Π΄ΠΊΠΎΠ²ΠΎ Π·Π°Π»ΠΈΡˆΠΈΡ‚ΠΈ Caps Lock ΡƒΠ²Ρ–ΠΌΠΊΠ½Π΅Π½ΠΈΠΌ Ρ– Π½Π΅ ΠΏΠΎΠΌΡ–Ρ‚ΠΈΡ‚ΠΈ Ρ†ΡŒΠΎΠ³ΠΎ. Π£ Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΡ… тСкстових полях користувачі Π»Π΅Π³ΠΊΠΎ Π±Π°Ρ‡Π°Ρ‚ΡŒ Π²Π΅Π»ΠΈΠΊΡ– Π»Ρ–Ρ‚Π΅Ρ€ΠΈ, Π°Π»Π΅ Ρƒ ΠΏΠΎΠ»Ρ– пароля (<input type="password">) Ρ†Π΅ Π½Π΅ Ρ‚Π°ΠΊ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ– Π²Π²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Π½Π΅ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΈΠΌ, Ρ‰ΠΎ спричиняє нСзручності.

Π‘ΡƒΠ»ΠΎ Π± Ρ‡ΡƒΠ΄ΠΎΠ²ΠΎ, якби Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠΏΠ΅Ρ€Π΅Π΄ΠΆΠ°Ρ‚ΠΈ користувачів ΠΏΡ€ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ²Π°Π½ΠΈΠΉ Caps Lock. Π”Π°Π²Π°ΠΉΡ‚Π΅ розглянСмо, як Ρ†Π΅ Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Π·Π° допомогою JavaScript.

🎯 Π’ΠΈΠ·Π½Π°Ρ‡Π°Ρ”ΠΌΠΎ Caps Lock Π·Π° допомогою getModifierState

Для визначСння, Ρ‡ΠΈ Caps Lock ΡƒΠ²Ρ–ΠΌΠΊΠ½Π΅Π½ΠΈΠΉ, ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ скористатися ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ getModifierState Π· KeyboardEvent:

document.querySelector('input[type="password"]').addEventListener('keyup', function (event) {
    const capsLockOn = event.getModifierState('CapsLock');
    if (capsLockOn) {
        alert("⚠️ Π£Π²Π°Π³Π°! Caps Lock ΡƒΠ²Ρ–ΠΌΠΊΠ½Π΅Π½ΠΈΠΉ.");
    }
});

πŸ”Ή Π―ΠΊ Ρ†Π΅ ΠΏΡ€Π°Ρ†ΡŽΡ”?

  • ВідстСТуємо ΠΏΠΎΠ΄Ρ–ΡŽ keyup Ρƒ ΠΏΠΎΠ»Ρ– пароля.
  • Використовуємо getModifierState('CapsLock'), Ρ‰ΠΎΠ± ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΈΡ‚ΠΈ стан Caps Lock.
  • Π―ΠΊΡ‰ΠΎ Caps Lock ΡƒΠ²Ρ–ΠΌΠΊΠ½Π΅Π½ΠΈΠΉ, ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ вивСсти попСрСдТСння.

Π’ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΊΠ°Π·ΡƒΠ²Π°Ρ‚ΠΈ повідомлСння користувачу Ρƒ вигляді тСкстової ΠΏΡ–Π΄ΠΊΠ°Π·ΠΊΠΈ Π°Π±ΠΎ Π·ΠΌΡ–Π½ΡŽΠ²Π°Ρ‚ΠΈ ΡΡ‚ΠΈΠ»ΡŒ поля.

πŸ“– Π†Π½ΡˆΡ– корисні значСння getModifierState

ΠœΠ΅Ρ‚ΠΎΠ΄ getModifierState ΠΌΠΎΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠΆ пСрСвіряти Ρ–Π½ΡˆΡ– ΠΊΠ»Π°Π²Ρ–ΡˆΡ–-ΠΌΠΎΠ΄ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€ΠΈ ΠΊΠ»Π°Π²Ρ–Π°Ρ‚ΡƒΡ€ΠΈ:

dictionary EventModifierInit : UIEventInit {
  boolean ctrlKey = false;
  boolean shiftKey = false;
  boolean altKey = false;
  boolean metaKey = false;

  boolean modifierAltGraph = false;
  boolean modifierCapsLock = false;
  boolean modifierFn = false;
  boolean modifierFnLock = false;
  boolean modifierHyper = false;
  boolean modifierNumLock = false;
  boolean modifierScrollLock = false;
  boolean modifierSuper = false;
  boolean modifierSymbol = false;
  boolean modifierSymbolLock = false;
};

πŸ“Œ ΠšΠΎΡ€ΠΈΡΠ½Ρ– ΠΊΠΎΠΌΠ±Ρ–Π½Π°Ρ†Ρ–Ρ—:

  • event.getModifierState('Shift') – Ρ‡ΠΈ натиснута ΠΊΠ»Π°Π²Ρ–ΡˆΠ° Shift?
  • event.getModifierState('Control') – Ρ‡ΠΈ натиснута Ctrl?
  • event.getModifierState('Alt') – Ρ‡ΠΈ натиснута Alt?
  • event.getModifierState('Meta') – Ρ‡ΠΈ натиснута ΠΊΠ»Π°Π²Ρ–ΡˆΠ° Windows (Cmd Π½Π° Mac)?
  • event.getModifierState('NumLock') – Ρ‡ΠΈ Π²Π²Ρ–ΠΌΠΊΠ½Π΅Π½ΠΎ Num Lock?

Π¦Ρ– моТливості Π΄ΠΎΠΏΠΎΠΌΠ°Π³Π°ΡŽΡ‚ΡŒ ΠΏΠΎΠΊΡ€Π°Ρ‰ΠΈΡ‚ΠΈ Ρ€ΠΎΠ±ΠΎΡ‚Ρƒ Π· ΠΊΠ»Π°Π²Ρ–Π°Ρ‚ΡƒΡ€Π½ΠΈΠΌΠΈ подіями Ρ‚Π° ΡΡ‚Π²ΠΎΡ€ΡŽΠ²Π°Ρ‚ΠΈ Π±Ρ–Π»ΡŒΡˆ Ρ–Π½Ρ‚ΡƒΡ—Ρ‚ΠΈΠ²Π½Ρ– інтСрфСйси.

🏁 Висновок

getModifierState Π΄Π°Ρ” Π·ΠΌΠΎΠ³Ρƒ дізнатися ΠΏΡ€ΠΎ стан Caps Lock Ρ‚Π° Ρ–Π½ΡˆΠΈΡ… ΠΊΠ»Π°Π²Ρ–Ρˆ-ΠΌΠΎΠ΄ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€Ρ–Π² ΠΏΡ–Π΄ час ΠΏΠΎΠ΄Ρ–ΠΉ ΠΊΠ»Π°Π²Ρ–Π°Ρ‚ΡƒΡ€ΠΈ. Π¦Π΅ корисний інструмСнт для ΠΏΠΎΠ»Ρ–ΠΏΡˆΠ΅Π½Π½Ρ UX, особливо ΠΏΡ€ΠΈ Π²Π²Π΅Π΄Π΅Π½Π½Ρ– ΠΏΠ°Ρ€ΠΎΠ»Ρ–Π².

πŸš€ ВикористовуйтС Ρ†Π΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρƒ своїх ΠΏΡ€ΠΎΡ”ΠΊΡ‚Π°Ρ… Ρ‚Π° ΠΏΠΎΠΊΡ€Π°Ρ‰ΡƒΠΉΡ‚Π΅ Π²Π·Π°Ρ”ΠΌΠΎΠ΄Ρ–ΡŽ Π· користувачСм!