Если вы частый читатель SitePoint и, возможно, мой последователь, вы знаете, что я написал много статей о HTML5 и JavaScript API. До сих пор я публиковал статьи, в которых обсуждались API-интерфейсы, которые вы можете начать использовать сегодня, даже если вы используете полифилл.
Сегодня я избавлюсь от этой привычки, предоставив вам предварительный просмотр некоторых API, которые все еще находятся на очень ранней стадии. Чтобы дать вам представление о том, насколько передовыми являются эти API, рассмотрим, что 2 из 3 были анонсированы всего несколько дней назад. Из-за этого плохая новость заключается в том, что ни один из них не может быть использован прямо сейчас . Однако, если вы заинтересованы в том, что они делают, вы можете следить за разработкой спецификаций и, возможно, предоставить свой отзыв.
Без лишних слов, давайте начнем!
API веб-сигналов
Web Alarms API предоставляет доступ к настройкам тревоги устройства, которые могут запланировать уведомление или запуск приложения в определенное время. Типичный вариант использования этого API включает приложения, такие как сигналы тревоги, календари или любое другое программное обеспечение, которое должно выполнить действие в определенное время.
Начиная с прошлого года этот API является рабочим проектом W3C. Таким образом, спецификации находятся на первом этапе процесса, чтобы стать Рекомендацией W3C. Этот API предоставляется через свойство window.navigator
объекта window.navigator
. Свойство alarms
предлагает три метода:
-
getAll()
:getAll()
все тревоги, добавленные на устройство, в виде массива объектовAlarm
. -
add()
: регистрирует сигнал тревоги на основе объектаDate
и возвращает объектAlarmRequest
. -
remove()
: удаляет ранее добавленный сигнал тревоги на основе уникального идентификатора (уникального в пределах источника приложения).
Просто чтобы дать вам представление о том, как вы могли бы в идеале вызывать эти методы, вот пример, который добавляет тревогу (помните, что на данный момент этот код не будет работать ни в одном браузере):
var alarmId; var request = navigator.alarms.add( new Date("June 29, 2012 07:30:00"), "respectTimezone", ); request.onsuccess = function (e) { alarmId = e.target.result; }; request.onerror = function (e) { alert(e.target.error.name); };
Затем, если вы хотите удалить тот же сигнал тревоги, вы можете написать:
var request = navigator.alarms.remove(alarmId); request.onsuccess = function (e) { alert("alarm removed"); }; request.onerror = function (e) { alert(e.target.error.name); };
Если вы хотите узнать больше об API Web Alarms, взгляните на спецификацию .
API представления
Цель API представления — сделать вторичные дисплеи, такие как проектор или подключенный телевизор, доступными для Интернета и учитывать дисплеи, подключенные с использованием проводных (HDMI, DVI или аналогичных) и беспроводных технологий (MiraCast, Chromecast, DLNA). AirPlay или аналогичный). Этот API-интерфейс обеспечивает обмен сообщениями между запрашивающей страницей и страницей презентации, отображаемой на дополнительном дисплее.
Обратите внимание, что эти спецификации не являются стандартом W3C и не входят в стандартную дорожку W3C Этот API предоставляется через свойство window.navigator
объекта window.navigator
. Свойство предоставляет один метод, называемый requestSession()
, и два события present
и availablechange
. requestSession()
используется для запуска или возобновления презентации на дополнительном экране. Он возвращает объект сеанса, который представляет дескриптор текущего сеанса презентации. Когда загружается содержимое, обозначенное URL-адресом, переданным в requestSession()
, страница на экране презентации получает present
событие. Наконец, availablechange
запускается, когда становится доступным первый вторичный дисплей или удаляется последний вторичный дисплей.
Пример, взятый из спецификаций, в которых используется этот API, показан ниже:
<button disabled>Show</button> <script> var presentation = navigator.presentation, showButton = document.querySelector('button'); presentation.onavailablechange = function(e) { showButton.disabled = !e.available; showButton.onclick = show; }; function show() { var session = presentation.requestSession('http://example.org/'); session.onstatechange = function() { switch (session.state) { case 'connected': session.postMessage(/*...*/); session.onmessage = function() { /*...*/ }; break; case 'disconnected': console.log('Disconnected.'); break; } }; } </script>
Если вы хотите узнать больше об API презентаций, взгляните на итоговый отчет .
Резервный API
Standby API позволяет запрашивать блокировку экрана в контексте просмотра верхнего уровня. Это предотвращает переход устройства в состояние энергосбережения (например, выключение экрана). Эта способность имеет решающее значение для нескольких веб-приложений. Например, представьте, что вы ведете машину и используете на смартфоне веб-навигатор (а не собственное приложение). Если вы не взаимодействуете с экраном, если в настройках не указано иное, экран вашего устройства отключится. Однако в таких случаях вы хотите, чтобы ваш экран оставался активным. Именно здесь этот API вступает в игру.
Standby API предоставляется через свойство window.navigator
объекта window.navigator
. Он предоставляет два метода:
-
request
: заставляет базовую платформу держать экран в активном состоянии. -
release
: снимает блокировку от пробуждения, поэтому экран больше не будет оставаться активным.
Оба эти метода принимают только один аргумент, который может быть "screen"
или "system"
. Первый используется для целевого экрана устройства, а второй — для других ресурсов устройства, таких как процессор или радио (но не экран).
Пример, который показывает, как использовать этот API для запроса экрана, чтобы не заснуть, показан ниже:
navigator.wakeLock.request("screen").then( function successFunction() { // do something }, function errorFunction() { // do something else } );
Чтобы разрешить выключение экрана, мы можем написать следующее утверждение:
navigator.wakeLock.release("display");
Если вы хотите узнать больше о Standby API, взгляните на неофициальный черновик .
Выводы
В этой статье я познакомил вас с некоторыми совершенно новыми API-интерфейсами JavaScript. Еще раз хочу подчеркнуть, что поскольку все они находятся на очень ранней стадии, ни один браузер не поддерживает их. Поэтому мы не можем играть с ними. Однако, будучи таким новым, у вас есть шанс следить за их развитием и даже вносить свой вклад в технические характеристики.
Будущее веб-разработки ярко, будьте частью этого!