Summary

  • Сведения о батарее позволяют веб-приложению реже опрашивать почту или сохранить документ до выключения устройства.
  • Слишком подробные значения заряда и оставшегося времени помогают отличить одну машину от другой. В документах W3C видно, как эта проблема вошла в работу над стандартом и привела к ограничениям точности и доступа.

Почта, которая каждые несколько секунд стучится на сервер при почти пустой батарее, напоминает гостя, не отпускающего звонок. Редактор текста, успевающий сохранить абзац, ведёт себя лучше. Предложение W3C 2016 года приводит оба примера. Браузер сообщает состояние питания, а приложение решает, уменьшить ли работу или спасти уже сделанную. Батарее нравится отдых; автору — сохранённый файл.

В первом публичном проекте апреля 2011 года речь шла о событии, выделенном из широкой System Information API. Рассматривались питание от батареи, зарядка, уровень от нуля до ста и оставшееся время в секундах. Для некоторых полей рабочая группа ещё искала серьёзные применения. Пример просто выводил уровень в журнал. Это была ранняя событийная схема, а не позднейший getBattery(). Шкалу уже показали, но не решили, сколько её делений нужно каждой странице.

Точная цифра удобна для планирования задачи и удобна для любопытства. Уровень, состояние зарядки и меняющаяся оценка времени вместе дают временный профиль устройства. Странице не нужно заглядывать в адресную книгу, чтобы узнать характерную деталь компьютера. Чем больше знаков после запятой показывает полезный прибор, тем больше у него читателей с чужими намерениями.

Это заметили и авторы стандарта. В письме рабочей группы W3C от июля 2015 года председатель Frederick Hirsch передал конкретные предложения после оригинального исследования: предупредить о риске распознавания по точным показаниям, подумать о разрешении на доступ и показывать пользователю, когда интерфейс используется. Архив фиксирует предметную дискуссию. Он не даёт повода выдумывать число сайтов, которые отслеживали людей по батарее.

В Proposed Recommendation марта 2016 года появилось предупреждение против слишком высокой точности. Браузер может запросить разрешение или скрыть детали значения. navigator.getBattery() возвращает BatteryManager с состоянием зарядки, уровнем и временем до полной зарядки или разрядки. Если настоящий статус недоступен, значения по умолчанию изображают полный аккумулятор, подключённый к сети. Это ещё и защита от страницы, которая решила бы ухудшить сервис лишь потому, что браузер умолчал о заряде. Зелёный огонёк иногда означает штору, а не победу батареи.

Проект W3C октября 2024 года описывает getBattery() как функцию безопасного контекста. Для battery в Permissions Policy список разрешённых источников по умолчанию равен 'self'; запрещённый документ получает NotAllowedError. Предупреждение о точности остаётся, как и возможность спросить разрешение или замаскировать ответ. Страница может экономить энергию, не получая посекундный дневник аккумулятора.

История публикаций W3C тянется от проектов 2011 года через работу 2016-го к пересмотрам 2024-го. Это даты документов, а не обещание одинаковой реализации во всех браузерах. Исправление в замысле важнее календаря: подсказка для экономии энергии превращается в опознавательный знак, если прибор отвечает слишком подробно.

Почта всё ещё может подождать между проверками, а редактор — вовремя сохранить текст. Им не требуется измерять последние вздохи батареи секундомером.