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
- Порада
-
Для подій
автор: Bondfocusіblurдодавайте спеціальні стилі для покращення UX. Наприклад, змінюйте рамку текстового поля при отриманні фокусу, щоб привернути увагу користувача. - Порада
-
Обробляйте події на рівні батьківських елементів через делегування. Наприклад, для списку посилань додавайте
автор: Bondclickна<ul>, а не на кожне<li>. Це спрощує управління кодом. - Порада
-
Використовуйте подію
автор: Bondscrollдля динамічних ефектів, таких як зникнення/поява елементів при прокрутці. Але пам’ятайте, що обробники цієї події можуть сильно вплинути на продуктивність.
Синтаксис
element.addEventListener('eventName', function(event) {
// Ваш код
});
методи
| Метод | Опис |
|---|---|
| initUIEvent | Ініціалізує користувацьку подію `UIEvent` з визначеними параметрами, використовується для створення кастомних подій. |
властивості
| Властивість | Опис |
|---|---|
| sourceCapabilities | Вказує на `InputDeviceCapabilities` об'єкта, що описує пристрій, який викликав подію (наприклад, миша чи клавіатура). |
| view | Посилання на вікно (`window`), в якому відбулася подія, зазвичай визначає контекст виконання. |
| which | Вказує на код клавіші або кнопки миші, що викликала подію, але вважається застарілим (використовуйте `key` або `button`). |
| detail | Надає додаткову інформацію про подію, наприклад, кількість кліків для подій типу `MouseEvent`. |
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 1 | 1 | 1 | 12.1 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 37 | 18 | 4 | 1 |
| Переглядач | ||
|---|---|---|
| - | - |
Приклади
+ запропонувати свій приклад у пісочниці
Цей код показує, який елемент форми знаходиться у фокусі. Він корисний для створення динамічних підказок або повідомлень для користувача.
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 = 'Жоден елемент не активний';
});
Цей код оновлює текст у заголовку залежно від позиції прокрутки сторінки. Це може використовуватись у лендінгах для створення ефекту динамічного інтерфейсу.
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`;
});
Користувач вводить ім'я, і лічильник символів під полем динамічно оновлюється. При фокусі рамка поля змінює колір, а після втрати фокусу повертається до звичайного стану. Після натискання кнопки "Надіслати" виводиться повідомлення про успіх чи помилку залежно від заповнення полів. Це створює інтерактивний та адаптивний UX.
Коментарі
Коментарів ще немає — будьте першим!