Реальная проверка в вашем браузере
Экран нужен включённым
Выберите способ и включите удержание. Смена вкладки или уход со страницы выключают его; возвращение не запускает новый запрос.
Управление удержанием
NoSleep.js сначала использует системный API. Если его нет — пробует небольшой видеофрагмент.
Таймер начнётся после успешного запуска.
Нажмите «Включить удержание», когда это нужно.
Отменяем предыдущий запрос. Новый запуск станет доступен после ответа браузера.
- Среда
- Проверяем…
- Системный API
- Проверяем…
- Вкладка
- Проверяем…
Наблюдайте за состоянием
Нажмите «Включить удержание», когда это нужно.
- Текущий способ
- Не запущен
- Прошло времени
- 00:00
- До отключения
- —
Пример задачи, где это пригодится
Повторите шаг, не торопясь
Подготовьте рабочее место и откройте необходимые материалы. Экран с инструкцией должен оставаться рядом, пока руки заняты.
00:00
Здесь отображается время удержания. Сам таймер не мешает устройству выключить экран — для этого нужен принятый запрос.
Информация всегда перед глазами
Значения демонстрационные. Полезно для инструкций, очереди задач или табло, если экран нужен человеку прямо сейчас.
Журнал событий 0
- Событий пока нет.
Проверьте на телефоне
Для проверки удержания откройте этот стенд на своём телефоне в обычном браузере.
Выберите время отключения больше тайм-аута блокировки экрана. После запуска не касайтесь экрана.
Нажмите «Выключить». Проверьте смену вкладки и режим энергосбережения: результат может отличаться.
Удержание расходует заряд. Включайте его на время реальной задачи и давайте человеку явную кнопку отключения.
Повторить в своём проекте
Скачайте исходники рядом с демонстрацией. В проекте есть локальная NoSleep.js, отдельная модель состояний и адаптер, который следит за освобождением системного удержания.
import { WakeController } from './lib/controller.js';
import { browserCapabilities, createNoSleepBackend } from './lib/backends.js';
const capabilities = () => browserCapabilities({ navigator, document, window });
let backend;
const screen = new WakeController({
getCapabilities: capabilities,
createBackend: () => backend ??= createNoSleepBackend(window.NoSleep, capabilities()),
onChange: state => console.log(state.phase, state.message)
});
startButton.addEventListener('click', () => screen.start());
stopButton.addEventListener('click', () => screen.stop());
document.addEventListener('visibilitychange', () =>
screen.visibilityChanged(document.visibilityState === 'visible'));
window.addEventListener('pagehide', () => screen.stop('pagehide'));
setInterval(() => screen.tick(), 1000);Это оболочка демонстрации, а не дополнительный API NoSleep.js. Полный рабочий пример — в app.js; правила использования и запуск описаны в README.