Введение
API уведомлений позволяет отображать уведомления пользователю об определенных событиях как пассивно (новые электронные письма, твиты или события календаря), так и о взаимодействиях с пользователем, независимо от того, на какой вкладке находится фокус. Существует проект спецификации , но в настоящее время его нет ни в одном стандарте.
Вы можете выполнить следующие простые шаги, чтобы реализовать уведомления всего за несколько минут:
Шаг 1. Проверьте поддержку API уведомлений.
Проверяем, поддерживается ли webkitNotifications
. Обратите внимание, что имя webkitNotifications
связано с тем, что оно является частью черновика спецификации. Вместо этого в окончательной спецификации будет функция Notifications().
// check for notifications support
// you can omit the 'window' keyword
if (window.webkitNotifications) {
console.log("Notifications are supported!");
}
else {
console.log("Notifications are not supported for this Browser/OS version yet.");
}
Шаг 2. Разрешите пользователю предоставить веб-сайту разрешение на показ уведомлений.
Любой из упомянутых нами конструкторов выдаст ошибку безопасности, если пользователь вручную не предоставил веб-сайту разрешения на показ уведомлений. Для обработки исключения вы можете использовать оператор try-catch, но с той же целью вы также можете использовать метод checkPermission
.
document.querySelector('#show_button').addEventListener('click', function() {
if (window.webkitNotifications.checkPermission() == 0) { // 0 is PERMISSION_ALLOWED
// function defined in step 2
window.webkitNotifications.createNotification(
'icon.png', 'Notification Title', 'Notification content...');
} else {
window.webkitNotifications.requestPermission();
}
}, false);
Если у веб-приложения нет разрешений на показ уведомлений, метод requestPermission
отобразит информационную панель:
Однако очень важно помнить, что метод requestPermission
работает только в обработчиках событий, запускаемых действием пользователя, например событиями мыши или клавиатуры, чтобы избежать нежелательных информационных панелей. В данном случае действием пользователя является нажатие кнопки с идентификатором «show_button». Приведенный выше фрагмент никогда не будет работать, если пользователь в какой-то момент явно не нажал кнопку или ссылку, которая запускает requestPermission
.
Шаг 3. Прикрепите прослушиватели и другие действия
document.querySelector('#show_button').addEventListener('click', function() {
if (window.webkitNotifications.checkPermission() == 0) { // 0 is PERMISSION_ALLOWED
// function defined in step 2
notification_test = window.webkitNotifications.createNotification(
'icon.png', 'Notification Title', 'Notification content...');
notification_test.ondisplay = function() { ... do something ... };
notification_test.onclose = function() { ... do something else ... };
notification_test.show();
} else {
window.webkitNotifications.requestPermission();
}
}, false);
На этом этапе вы можете захотеть инкапсулировать все эти события и действия, создав свой собственный класс уведомлений, чтобы сохранить чистоту кода, хотя это выходит за рамки данного руководства.