API для определения простоя
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Защищённый контекст: Эта функция доступна только в защищённых контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Экспериментальная функция: Это экспериментальная технология
Перед использованием в производстве тщательно изучите таблицу совместимости с браузерами.
Примечание: Эта функция доступна в посвящённых веб-воркерах.
API для определения простоя предоставляет возможность определять состояние активности пользователя, активный, неактивный и заблокированный, а также получать уведомления об изменениях состояния простоя без опроса со стороны скрипта.
Концепции и использование
Нативные приложения и расширения браузера используют определение простоя, основываясь на взаимодействии пользователя с устройством. Например, приложения чата могут показывать другим пользователям, доступен ли кто-то. Другие приложения могут выбирать показывать уведомления только при взаимодействии пользователя с приложением. Веб-приложение может использовать этот API для аналогичных случаев. Кроме того, прогрессивное веб-приложение может использовать определение простоя для запуска обновления сервисного работника, когда приложение не используется.
Интерфейсы
-
IdleDetectorЭкспериментально -
Предоставляет методы и события для определения активности пользователя на устройстве или экране.
Примеры
Следующий пример демонстрирует создание детектора и протоколирование изменений состояния простоя пользователя. Для получения необходимой активации пользователя используется кнопка.
const controller = new AbortController();
const signal = controller.signal;
startButton.addEventListener("click", async () => {
if ((await IdleDetector.requestPermission()) !== "granted") {
console.error("Idle detection permission denied.");
return;
}
try {
const idleDetector = new IdleDetector();
idleDetector.addEventListener("change", () => {
const userState = idleDetector.userState;
const screenState = idleDetector.screenState;
console.log(`Idle change: ${userState}, ${screenState}.`);
});
await idleDetector.start({
threshold: 60_000,
signal,
});
console.log("IdleDetector is active.");
} catch (err) {
// Deal with initialization errors like permission denied,
// running outside of top-level frame, etc.
console.error(err.name, err.message);
}
});
stopButton.addEventListener("click", () => {
controller.abort();
console.log("IdleDetector is stopped.");
});
Спецификации
| Спецификация |
|---|
| API для определения простоя # api-idledetector |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
IdleDetector |
94 | 11494–96 | Нет | 80 | Нет | 94 | Нет | 66 | Нет | 17.0 | 94 |
Idle_Detection_API |
94 | 11494–96 | Нет | 80 | Нет | 94 | Нет | 66 | Нет | 17.0 | 94 |
change_event |
94 | 11494–96 | Нет | 80 | Нет | 94 | Нет | 66 | Нет | 17.0 | 94 |
requestPermission_static |
94 | 11494–96 | Нет | 80 | Нет | 94 | Нет | 66 | Нет | 17.0 | 94 |
screenState |
94 | 11494–96 | Нет | 80 | Нет | 94 | Нет | 66 | Нет | 17.0 | 94 |
start |
94 | 11494–96 | Нет | 80 | Нет | 94 | Нет | 66 | Нет | 17.0 | 94 |
userState |
94 | 11494–96 | Нет | 80 | Нет | 94 | Нет | 66 | Нет | 17.0 | 94 |
© 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/Idle_Detection_API