Уведомления на HTML5.
В HTML5 появилась новая интересная вещь - notifications, т.е. уведомления. Вот о том, как использовать уведомления я и расскажу в этой статье.
Наверняка, многие из вас видели уведомления о новых сообщениях или о том, что кто-то поставил лайк ВКонтакте. Вот то же самое теперь встроено в браузеры, но поддерживается ещё очень плохо: Safari от 6 версии, Chrome от 27 и Firefox с 22 версии. Пока что это всё, хотя, в Опере этот объект есть и, скорее всего, в одном из обновлений эта функция заработает и там.
Перед тем, как отправить уведомление, лучше проверить разрешение. Т.е. человек увидит в браузере вопрос о том, разрешить или запретить уведомления от сайта и в зависимости от того, разрешит он их или нет, и покажется или не покажется уведомление. Давайте перейдём к коду.
if(!window.Notification) {
alert("Извините, но ваш браузер не поддерживает уведомления");
} else {
Notification.requestPermission(
function(p) {
if(p === "denied") {
alert("Вы отклонили уведомление");
} else if(p === "granted") {
alert("Вы приняли уведомление");
}
}
);
}
Как видно из кода, у нас есть объект Notification, который и отвечает за уведомления, а у него есть метод requestPermission, который принимает callback функцию, в которую передаётся объект события. Дальше мы проверяем, если статус denied(запрещено), то выводим соотвествующее сообщение, а если статус равен granted(разрешено), то выводим другое сообщение. Думаю, суть ясна. Если пользователь отклонит уведомление, то статус будет denied, иначе же статус будет granted.
Ещё есть статус default, при котором человеку и задаётся вопрос, разрешить или отклонить показ уведомления. В коде ниже мы его и используем.
<a href="#" id="link">Вызвать уведомление</a>
<script>
var link = document.getElementById("link");
link.addEventListener('click', function(e) {
var nf;
e.preventDefault();
if(Notification.permission === "default") {
alert("Пожалуйста, разрешите показ уведомлений");
} else {
nf = new Notification('Заголовок уведомления', {
body: 'Какой-то текст уведомления',
icon: 'images/icon.png',
tag: '1234567'
});
nf.onclick = function() {
window.location = '?notification=' + this.tag;
};
}
}, false);
</script>
У нас есть какая-то ссылка, при клике по которой мы просим пользователя разрешить показ уведомлений. Если он ответит положительно, то создаём объект наших уведомлений и первым параметром в конструктор передаём заголовок уведомления. Вторым же параметром передаётся объект, который включает в себя текст уведомления в свойстве body, иконку уведомления в свойстве icon(необязательно) и tag. Tag - это что-то вроде id, т.е. уникального идентификатора уведомления. "Где его можно использовать?" - Всё зависит от ситуации, а я в примере привёл банальное добавление к строке URL параметра notification со значением, полученным из свойства tag, при клике по уведомлению.
Использовать это вы уже можете, например, у себя в админке, если вы используете браузер, поддерживающий данный функционал, а в будущем можно будет использовать на основном сайте.
-
- Михаил Русаков
Комментарии (6):
Интересно, не знал, спасибо! А можно попросить статью про реализацию active record или orm для совсем простых задач. Очень прошупрошу
Ответить
Ваше пожелание будет учтено. Спасибо.
Ответить
В Амиго не работает
Ответить
Используйте нормальный браузер.
Ответить
И какой же? Chrome? Не работает. Internet Explorer 9? Не работает. В Opera Mini, Opera Mobile только код видно как информация. Какой браузер брать? Какой лучший?
Ответить
в последнем хроме выводится сообщение "Пожалуйста, разрешите показ уведомлений" с кнопкой ОК после ничего не выводится, в опере тож так же
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.