Notify Better.js: создание динамической фавиконки и заголовка страницы

Скачать плагин Посмотреть демонстрацию

Возможно, вы когда-нибудь задавались вопросом, как сделать так, чтобы фавиконка (favicon) сайта динамически отображала сегодняшнюю дату, как это реализовано в сервисе Google Calendar? Если да, то сегодня ваше удивление пройдёт, потому что я хочу представить вам jQuery-плагин под названием Notify Better, который создан в помощь веб-разработчикам, которые хотят реализовать уведомления посредством фавиконки и заголовка веб-сайта, с помощью всего нескольких строк кода.

Примечание: К сожалению, браузеры Safari и Internet Explorer не поддерживают смену фавиконки при загрузке страницы. Но этот способ отлично работает на браузерах Firefox и Chrome.

Использование Notify Better.js для создания динамической фавиконки и заголовка страницы

Давайте начнем!

Для начала вам нужно убедиться, что у вас имеется последняя версия библиотеки jQuery, доступной здесь, и плагина jquery.notify-better.js, который можно найти тут.

Чтобы разрешить JavaScript динамически менять вашу фавиконку, вам нужно присвоить уникальный id тегу <link>, указывающему на вашу фавиконку и создать скрытый контейнер, в котором будет отображаться уведомление.

HTML-разметка:

<link rel="shortcut icon" id="favicon" href="favicon.png">
<div id="notification"></div>

Теперь, просто вызовите функцию notify_better, передав ей id скрытого контейнера, который мы добавили ранее:

Код JS:

$("#notification").notify_better({
  interval: 2000,
  url: "random_count.html", 
  overrideAjax: false,
  updateTitle: false,
  updateFavicon: {
    id: "favicon", 
    backgroundColor: "#f1c40f",
    textColor: "#6D461D",
    location: "full",
      shape: "square"
  },
  done: function() {
    alert("done!")
  }
});

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

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

Доступны следующие настройки:

  1. Интервал позволяет определять временной промежуток между опросами. Стандартное значение 5000 миллисекунд (5 секунд). Это означает, что скрипт будет пытаться получить значение счетчика каждые 5 секунд. Установите значение данного параметра в 0 или задайте значение false, чтобы скрипт запускался только один раз при загрузке или обновлении страницы;
  2. URL будет использоваться вызовом AJAX для получения значения счетчика. Вам нужно иметь URL-адрес, обратившись по которому, скрипт сможет получить значение счетчика в виде простого числа, которое затем будет использовано при обновлении. Этот параметр будет проигнорирован, если параметр overrideAjax установлен в значение on;
  3. overrideAjax это параметр, который позволит вам переопределить вам стандартный вызов AJAX своим собственным, что дает возможность настроить возвращаемые данные и то, как они будут отображаться. Более подробно об этом написано ниже.
  4. updateTitle если данный параметр установлен в значение true, то к заголовку веб-сайта будет добавлено значение счетчика, которое будет автоматически обновляться при каждом опросе. Например, когда скрипт получает значение 99, заголовок будет выглядеть следующим образом: «(99) Заголовок страницы»;
  5. updateFavicon позволяет задать следующие параметры:
    • id определяет идентификатор тега <link>, указывающего на фавиконку:
    • backgroundColor позволяет задать фоновый цвет фавиконки;
    • textColor задает цвет текста на фавиконке.;
    • location дает возможность задать позицию выводимого на фавиконке текста. Доступные варианты: full (текст будет в размер фавиконки), ne (northeast - северо-восток), nw (northwest - северо-запад), se (southeast - юго-восток) и sw (southwest - юго-запад);
    • shape позволяет определить форму уведомления. Можно выбрать между square и circle (квадрат и круг, соответственно).
  6. Done это вызов функции, который происходит после выполнения всех операций. Подходит для уведомления пользователя о том, что опрос был закончен.

Очистка уведомлений

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

$("#notification").clear();

и ваша фавиконка и сайт вернутся в изначальное состояние.

Дальнейшая настройка

В некоторых случаях, вам может понадобиться обработать вызов AJAX и возвращаемые данные самостоятельно. С помощью параметра overrideAjax, вы можете сделать это, вызвав функцию notify_better следующим образом:

$("#notification").notify_better({
  overrideAjax: function() {
    $.ajax({
      url: "count.html",
    }).done(function(data, textStatus, jqXHR) {
      titleclear(); 
      changeFavicon(data)  
      ...
    });
  }
});

Убедитесь, что вы вызвали методы titleclear() и changeFavicon(data) внутри вызова функции done, если хотите, чтобы плагин работал корректно. Функция titleClear будет очищать заголовок сайта от результатов работы предыдущего уведомления, а changeFavicon(data) - обновлять фавиконку согласно полученному значению.

Заключение

Теперь у вас есть динамическая фавиконка и заголовок, которые автоматически обновляются, отображая новое значение счетчика. Я надеюсь, что вы получили удовольствие и пользу от этого урока и от использования представленного плагина.

РедакцияПеревод статьи «Using Notify Better.js to Create a Dynamic Favicon and Title»