Буквально на днях наткнулся на интересную штуку - html5 notifications. Технология не новая и давно работает на таких сайтах как Вконтакте, GMail и др.
Главная их прелесть в том, что сообщение с вашего сайта будет показано, даже если пользователь находится на другой вкладке или свернул браузер.
Сразу огорчу, поддерживаются уведомления далеко не везде: Chrome (22), Firefox (22), Opera (25) и Safari (6), так что пока это всего лишь классная игрушка, но почему бы не взять и не поиграть)
Итак, let's code!
Первым делом необходимо получить разрешение на отправку уведомлений (увы и ах, спамеры).
Запросить права можно с помощью метода Notification.requestPermission().
Notification.requestPermission(function(permission) {
alert(permission);
});
После выполнения, в переменной
permission будет храниться права:
default- запрос еще не был отправлен;granted- разрешена отправка уведомлений;denied- запрет на отправку.
var notification = new Notification(title,
{
body: 'Господи, дай мне соурс-код Вселенной, час времени и хороший дебаггер!',
icon: 'img.png',
dir: 'auto',
tag: 'quote'
});
С параметрами все на удивление просто:
title - заголовок уведомления (обязательный). В разных браузерах обрезается по-разному.options - параметры вызова (не обязательно):body- тело сообщения (опять же, обрезается по-разному, нашел информацию, что max 200 символов);icon- url изображения (рекомендуется 40x40px);dir- направление уведомления (auto, ltr, rtl);lang- язык уведомления;tag- тег, группирующий сообщения. Если не задан, сообщения будут показываться друг за другом; если задан - новые сообщения будут заменять старые
Вот пара примеров: эти уведомления не группированы:
А эти группированы:
Уведомление имеет 4 события:
onclick- срабатывает при нажатии на тело сообщения;onshow- срабатывает при показе уведомления;onerror- срабатывает при отправке уведомления без разрешения (default, denied);onclode- срабатывает при закрытии уведомления.
Напоследок напишем функцию отправки сообщения:
function sendNotify(title, options) {
// Проверка прав
if (Notification.permission === "granted") {
// Отправляем уведомление
var notification = new Notification(title, options);
} else if (Notification.permission === 'default') {
// Если прав нет, пытаемся их получить
Notification.requestPermission(function(permission) {
// Если права успешно получены, отправляем уведомление
if (permission === "granted") {
var notification = new Notification(title, options);
}
});
}
} ...и повесим выполнение на кнопку: <input type="button" value="Вперед!" onclick="sendNotify('Цитата часа!', { body: 'Господи, дай мне соурс код Вселенной, час времени и хороший дебаггер!', icon: 'img.png', dir: 'auto' });"/>