document.hasFocus() — чи активна вкладка в JavaScript


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

Метод hasFocus() є частиною інтерфейсу Document у мові програмування JavaScript і відіграє ключову роль у визначенні, чи має елемент у документі фокус у даному моменті. Цей метод повертає булеве значення (true або false), яке вказує на те, чи знаходиться фокус десь у межах документа. Фокус важливий для інтерактивних веб-сайтів та додатків, адже він керує тим, який елемент сторінки в даний момент активний та готовий до взаємодії з користувачем, наприклад, до введення даних з клавіатури.

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

Ось кілька прикладів застосування методу hasFocus() на практиці:

  1. Підкреслення активності елемента. Використання hasFocus() може допомогти визначити, коли елемент (наприклад, поле вводу) має фокус, для того, щоб візуально виділити його, покращуючи тим самим користувацький інтерфейс.

  2. Валідація форми. Перш ніж виконати валідацію форми, можна переконатися, що користувач завершив взаємодію з формою, перевіривши, чи не має якесь поле в момент перевірки фокус. Це дозволяє уникнути передчасної або небажаної валідації.

  3. Покращення доступності. Визначення моменту, коли користувач взаємодіє з конкретними елементами сторінки, може бути використане для запуску додаткових пояснень або підказок, спрямованих на покращення доступності веб-сайту.

Розглянемо наступний приклад використання методу hasFocus():

document.addEventListener('click', function() {
    if (document.hasFocus()) {
        console.log('Документ має фокус.');
    } else {
        console.log('Документ не має фокусу.');
    }
});

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

автор: Bond

Порада

При розробці інтерактивних веб-додатків використовуйте hasFocus() для адаптації поведінки додатка на основі стану фокусу документа. Наприклад, якщо додаток відтворює аудіо або відео, ви можете автоматично призупинити відтворення, коли користувач втрачає фокус, та відновлювати його після повернення.

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

Метод hasFocus() може бути використаний для поліпшення доступності веб-сайтів, допомагаючи управлінню фокусом на елементах сторінки. За допомогою цього методу можна визначити, коли фокус потрібно перенести на певні елементи або коли потрібно відобразити додаткові інструкції для користувачів з обмеженими можливостями.

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

Розробники можуть інтегрувати hasFocus() в логіку валідації форм, щоб керувати повідомленнями про помилки або підказками. Якщо форма активна і користувач втрачає фокус (наприклад, переходячи на іншу вкладку), це може слугувати сигналом для збереження введених даних або для показу нагадувань про незавершене введення інформації при поверненні.

автор: Bond

Синтаксис

hasFocus()

Повернення

boolean

Повертає булеве значення: true, якщо активний елемент у документі має фокус, та false, якщо активний елемент фокус не має.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
34 3 7 21 12 5.5
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
37 34 4 7

Приклади

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

У цьому прикладі ми створили кнопку "Перевірити фокус", яка викликає JavaScript функцію при кліку. Ця функція використовує метод hasFocus(), щоб перевірити, чи має документ фокус у даний момент. Результат (чи має фокус документ чи ні) виводиться на сторінці під кнопкою. Користувач може взаємодіяти з кнопкою для перевірки фокусу документа.

HTML

<header>
  <h2 class="title">Метод/властивість: Document: hasFocus() method</h2>
  <p class="description">Перевіряє, чи має документ фокус в даний момент.</p>
</header>
<main>
  <div class="result">
    <button id="checkFocusBtn">Перевірити фокус</button>
    <p id="focusStatus">Статус фокусу: <span id="focusValue">-</span></p>
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

JS

document.getElementById("checkFocusBtn").addEventListener("click", function () {
  var focusStatus = document.hasFocus();
  var focusValue = document.getElementById("focusValue");

  if (focusStatus) {
    focusValue.textContent = "Документ має фокус.";
  } else {
    focusValue.textContent = "Документ не має фокусу.";
  }
});
//# sourceURL=pen.js
автор: Bond

У цьому прикладі ми використовуємо метод hasFocus() для перевірки, чи має документ фокус. Це може бути корисним для визначення, чи користувач активно взаємодіє з веб-сторінкою. Наприклад, це можна використати для призупинення анімації або зупинки медіа-вмісту, коли користувач перемикається на іншу вкладку браузера.

// Перевірка, чи документ має фокус
function checkDocumentFocus() {
  if (document.hasFocus()) {
    console.log("Документ має фокус.");
  } else {
    console.log("Документ не має фокусу.");
  }
}

// Викликати функцію для перевірки фокусу
checkDocumentFocus();
автор: Bond

HTML

<video id="exampleVideo" width="320" height="180" controls poster="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180' viewBox='0 0 320 180'%3E%3Crect width='320' height='180' fill='%23264653'/%3E%3Cpath d='M138 62 192 90 138 118Z' fill='%23e9c46a'/%3E%3Ctext x='160' y='152' font-family='sans-serif' font-size='15' text-anchor='middle' fill='%23e9c46a'%3Eмедіафайла немає%3C/text%3E%3C/svg%3E">
    Ваш браузер не відтворює відео.
</video>

JS

// HTML: <video id="exampleVideo" src="path/to/video.mp4" controls></video>

// JavaScript: Призупинення відео, коли документ не має фокусу
function pauseMediaOnBlur() {
  window.onblur = function() {
    if (!document.hasFocus()) {
      var video = document.getElementById("exampleVideo");
      video.pause();
    }
  };
}

// Викликати функцію для ініціалізації
pauseMediaOnBlur();
автор: Bond

Коментарі

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

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

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

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

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