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

Original author: Aurelio De Rosa
  • Translation
Перевод статьи «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. Еще раз хочу подчеркнуть, что поскольку они на очень ранней стадии становления, ни один браузер их пока не поддерживает. Поэтому мы не можем пока их попробовать. Однако, поскольку они настолько свежи вы еще можете помочь в их разработке и даже предложить свои правки в их спецификации.

Будущее веб-разработки в ваших руках!
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 14

    +12
    В статье не упомянуто, что это — фантастика, только в заключении («ни один браузер их пока не поддерживает»). Посмотрел свойства объекта window.navigator в последних версиях Firefox и Chrome (31 и 36) — нигде не увидел ни одного названного свойства. Надо бы такие вещи писать в первых 2 строчках, до ката. Так сказать, правила хорошего тона, а то ведь не все сразу догадаются по стилю письма, что их обманывают :).

    habrahabr.ru/post/183630/
      +2
      Это перевод. Ну а во вторых, те кто пишут хоть чуть чуть в JS и используют «новые плюшки» знают как далек путь от W3C придумают -> разработчики браузеров сделают
        +2
        Сегодня я решил нарушить это правило и описать вам несколько API на ранней стадии разработки. Эти технологии настолько свежи, что 2 из 3 были представлены всего несколько дней назад. Поэтому они пока не могут быть использованы. Однако, если вам интересно, что они позволят сделать, вы можете почитать спецификации и написать, что бы вы хотели в них улучшить.

        Читайте внимательнее
          +1
          Вначале статьи (третий абзац) это написано, никакого обмана, все честно:).
            +3
            Как один из авторов спецификации Standby API (а правильнее кстати Wake Lock API), могу немного рассказать про сроки, когда браузеры начнут их поддерживать.
            Мы в Яндексе ведем работы по имплементации Wake Lock API в Blink параллельно с разработкой спецификации, и с большой вероятностью API станет доступно осенью в Яндекс Браузере, и до конца года — в Chrome и Firefox. Если же очень хочется попробовать прямо сейчас — можем договориться о спец. сборке ;)
            Про Presentation API могу сказать что мы на него тоже смотрели с точки зрения того чтобы подключиться к разработке спеки и реализации в Blink. Тут ничего определенного сказать увы не могу, сроки пока очень туманны и вряд ли можно говорить про этот год.
            –1
            В оригинале заголовок «3 новых Javascript API которые вы бы могли захотеть узнать» или «3 новых Javascript API которые могут показаться вам любопытными» но не как не «которые вам стоит знать». Опять обманывают в заголовках.
              –5
              Согласитесь что заголовок «3 новых Javascript API которые вы бы могли захотеть узнать» звучит как-то инородно. И давайте вы не будете меня учить переводить. Если хотите попереводить, берите какой-нибудь пост и там упражняйтесь в правдивости
                0
                Суть в том что вы исковеркали смысл заголовка и это формирует у читателя ложные ожидания. Ошибки перевода в тексте статьи не так в этом плане напрягают. Да и как я понял все это имеет смысл только в контексте FireFox OS.
                  0
                  Не думаю, что это как-нибудь коверкает смысл.

                  Ошибки перевода в тексте статьи не так в этом плане напрягают.

                  Лучше скажите, где здесь ошибки, не будьте голословными.
                    0
                    Fesor, всё же, прав, "...APIs You May Want to Follow" — это не «You should to know». Автор сказал "… которые вам могут приглянуться", а не «стоит (следует) узнать».
                      –1
                      Я не думаю, что эта двузначность перевода кому-то навредит.
              +4
              Медленно JS просовывает из песочницы свои маленькие ручки, и это немного тревожит.
              Скажем, открыл сайт, а через некоторое время (не без помощи Web Alarms API) вылезет «Сейчас 09:00! Срочно заказать ШОК один продукт для увеличения покера!»
                0
                С помощью этих упражнений мой маленький покер превратился в огромный блэк-джек — узнай как!
                  +2
                  А потом появятся правила в AdBlock или отдельные плагины NoAlarms.

                  Ну а если без шуток, то
                  1) Это для приложений отдельных, а не браузеров (КЭП намекает)
                  2) В браузерах обязана быть галочка, как в случае с Notification API. Правда этот список с галочками бешено разрастается.

                Only users with full accounts can post comments. Log in, please.