Pull to refresh

3 новых JavaScript API, которые вам стоит узнать

Reading time4 min
Views28K
Original author: Aurelio De Rosa
Перевод статьи «3 New JavaScript APIs You May Want to Follow», Aurelio De Rosa из портала SitePoint.

Если вы постоянный читатель SitePoint, и возможно, читаете мои заметки, то вы знаете, что я написал множество статей о новых HTML5 и JavaScript API. До сих пор я писал заметки об API, которые вы можете использовать прямо сейчас, в том числе с использованием полифилов.

Сегодня я решил нарушить это правило и описать вам несколько API на ранней стадии разработки. Эти технологии настолько свежи, что 2 из 3 были представлены всего несколько дней назад. Поэтому они пока не могут быть использованы. Однако, если вам интересно, что они позволят сделать, вы можете почитать спецификации и написать, что бы вы хотели в них улучшить.

Давайте же, без лишних церемоний, начнем!

Web Alarms API


Web Alarms API предоставляет доступ к настройкам оповещений на устройстве пользователя, при помощи которых вы можете настроить уведомления или запустить некоторое приложение в определенное время. Типичные примеры использования данного API это запуск будильников, календарей или любых других приложений, которые выполняют определенные действия в определенное время.

Начиная с прошлого года, данный API находится на стадии набросков W3C (W3C Working Draft). Так что пока эта технология только стадии становления W3C рекомендацией (W3C Recommendation). Этот API доступен через свойство alarms объекта window.navigator. Объект alarms предоставляет три метода:

  • getAll(): возвращает список всех уведомлений на данном устройстве в виде массива объектов Alarm.
  • add(): регистрирует новое уведомление по указанной дате и возвращает объект типа 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);
};

Почитать поподробнее о Web Alarms API можно в его спецификации.

Presentation API


Назначение Presentation API заключается в том, чтобы предоставить вашим веб-приложениям доступ к дополнительным устройствам отображения, таким как проектор или подключенный телевизор. Этот API работает как с проводными (HDMI, DVI и др.) так и беспроводными (MiraCast, Chromecast, DLNA, AirPlay) технологиями. Все что делает этот API, это позволяет обмениваться сообщениями между скриптами на вашей странице и на странице презентации на дополнительном дисплее.

Важно помнить, что эти спецификации не являются W3C стандартом и не стоят в очереди на стандартизацию (W3C Standards Track). Данный API доступен по свойству presentation объекта window.navigator object. Данное свойство предоставляет метод 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>

Если вы хотите узнать больше о Presentation API, почитайте его документацию.

Standby API


Standby API дает контроль над переходом устройства в спящий режим. Этот API позволяет вам предотвращать переход устройства в режим энергосбережения (в том числе, отключение экрана). Эта возможность является ключевой для некоторых веб-приложений. Например, вы ведете машину используя веб-приложение навигатор установленное на вашем смартфоне. Если вы не взаимодействуете с вашим телефоном, а в настройках смартфона задано сбережение энергии, то через некоторое время дисплей вашего смартфона отключится. Тем не менее, в таких случаях вам не нужно, чтобы экран отключался. Вот тогда-то нам и пригодится этот API.

Standby API доступен через свойство wakeLock объекта window.navigator. Это свойство предоставляет два метода:

  • request: заставляет устройство не отключать экран.
  • release: разрешает устройству отключать экран по своему усмотрению.

Оба метода принимают только один аргумент, строку «screen» или «system». Первый вариант используется чтобы указать, что нужно не отключать экран, второй для того, чтобы указать на другие устройства, например процессор или радио (но не экран).

Пример того, как заставить систему держать экран включенным:

navigator.wakeLock.request("display").then(
    function successFunction() {
        // do something
    },
    function errorFunction() {
        // do something else
    }
); 

Чтобы разрешить экрану отключаться мы можем написать следующее:

navigator.wakeLock.release("display");

Чтобы больше узнать об этом API, вы можете почитать неофициальные наброски документации.

Заключение


В этой заметке я рассказал вам о нескольких новых JavaScript API. Еще раз хочу подчеркнуть, что поскольку они на очень ранней стадии становления, ни один браузер их пока не поддерживает. Поэтому мы не можем пока их попробовать. Однако, поскольку они настолько свежи вы еще можете помочь в их разработке и даже предложить свои правки в их спецификации.

Будущее веб-разработки в ваших руках!
Tags:
Hubs:
+21
Comments14

Articles