JS об'єкт UIEvent


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

UIEvent — це набір подій в JavaScript, які пов’язані з взаємодією користувача з елементами веб-сторінки. Вони забезпечують можливість реагувати на такі дії, як фокусування на елементі, натискання клавіш, зміну вмісту поля вводу, масштабування або прокрутку сторінки.

Основні події цього типу включають:

  • focus — спрацьовує, коли елемент отримує фокус.
  • blur — коли елемент втрачає фокус.
  • input — викликається під час зміни значення текстового поля.
  • resize — відстежує зміну розмірів вікна браузера.
  • scroll — викликається при прокручуванні сторінки або контейнера.

Приклад використання focus і blur:

const input = document.querySelector('#textInput');

input.addEventListener('focus', () => {
  console.log('Елемент отримав фокус');
});

input.addEventListener('blur', () => {
  console.log('Елемент втратив фокус');
});

Приклад обробки прокрутки:

window.addEventListener('scroll', () => {
  console.log('Сторінка прокручується!');
});

Події input і change особливо корисні для роботи з формами. input спрацьовує під час кожної зміни значення поля, а change — лише після того, як поле втратить фокус.

const input = document.querySelector('#textInput');
input.addEventListener('input', (event) => {
  console.log(`Поточне значення: ${event.target.value}`);
});

Використання цих подій дозволяє створювати інтерактивні веб-додатки, наприклад, форми з миттєвим підтвердженням даних, адаптивні інтерфейси та багато іншого.

автор: Bond

Порада

Для подій focus і blur додавайте спеціальні стилі для покращення UX. Наприклад, змінюйте рамку текстового поля при отриманні фокусу, щоб привернути увагу користувача.

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

Обробляйте події на рівні батьківських елементів через делегування. Наприклад, для списку посилань додавайте click на <ul>, а не на кожне <li>. Це спрощує управління кодом.

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

Використовуйте подію scroll для динамічних ефектів, таких як зникнення/поява елементів при прокрутці. Але пам’ятайте, що обробники цієї події можуть сильно вплинути на продуктивність.

автор: Bond

Синтаксис

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

методи

Метод Опис
initUIEvent Ініціалізує користувацьку подію `UIEvent` з визначеними параметрами, використовується для створення кастомних подій.

властивості

Властивість Опис
sourceCapabilities Вказує на `InputDeviceCapabilities` об'єкта, що описує пристрій, який викликав подію (наприклад, миша чи клавіатура).
view Посилання на вікно (`window`), в якому відбулася подія, зазвичай визначає контекст виконання.
which Вказує на код клавіші або кнопки миші, що викликала подію, але вважається застарілим (використовуйте `key` або `button`).
detail Надає додаткову інформацію про подію, наприклад, кількість кліків для подій типу `MouseEvent`.

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 1 1 12.1 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
37 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
- -

Приклади

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

Цей код показує, який елемент форми знаходиться у фокусі. Він корисний для створення динамічних підказок або повідомлень для користувача.

HTML

<form id="form">
    <label>Ім'я: <input type="text" name="name" value="Лесь"></label>
    <button type="submit">Надіслати</button>
</form>
<div id="status">Демонстраційний елемент</div>

JS

const form = document.querySelector('#form');
const status = document.querySelector('#status');

form.addEventListener('focusin', (event) => {
  status.textContent = `Активний елемент: ${event.target.name}`;
});

form.addEventListener('focusout', () => {
  status.textContent = 'Жоден елемент не активний';
});
автор: Bond

Цей код оновлює текст у заголовку залежно від позиції прокрутки сторінки. Це може використовуватись у лендінгах для створення ефекту динамічного інтерфейсу.

HTML

<div id="header" class="scroll-demo">
    <div class="scroll-inner">Прокручуваний вміст</div>
</div>

CSS

.scroll-demo {
    width: 220px;
    height: 110px;
    overflow: auto;
    border: 1px solid #0172ad;
}

.scroll-inner {
    width: 600px;
    height: 400px;
    background: linear-gradient(135deg, #eef6ff, #0172ad);
    padding: 8px;
}

JS

const header = document.querySelector('#header');
window.addEventListener('scroll', () => {
  const scrollPosition = window.scrollY;
  header.textContent = `Поточна позиція прокрутки: ${scrollPosition}px`;
});
автор: Bond

Користувач вводить ім'я, і лічильник символів під полем динамічно оновлюється. При фокусі рамка поля змінює колір, а після втрати фокусу повертається до звичайного стану. Після натискання кнопки "Надіслати" виводиться повідомлення про успіх чи помилку залежно від заповнення полів. Це створює інтерактивний та адаптивний UX.

автор: Bond

Коментарі

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

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

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

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

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

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

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

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

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

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

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