SECURITY_ERR: DOM Exception 18
действительно, если пользователь не разрешил вашему запросу получать уведомления.
Причина, по которой это происходит, заключается просто в том, что requestPermission
является асинхронным.Когда пользователь нажимает Разрешить , чтобы получить разрешение, он позволяет вам использовать функцию уведомлений HTML5.
В вашем случае вы не ждете, пока пользователь нажмет Разрешить кнопка, она автоматически пытается создать уведомление HTML5 без вечера ждать их подтверждения.Если вы переставите свои условные выражения, это должно сработать.
function RequestPermission(callback) {
window.webkitNotifications.requestPermission(callback);
}
function notif() {
if (window.webkitNotifications.checkPermission() > 0) {
RequestPermission(notif);
} else {
notification = window.webkitNotifications.createHTMLNotification('http://localhost:3000/images/rails.png');
notification.show();
}
}
Как вы заметили выше, поместите создание уведомлений в условный оператор, когда при вызове обратного вызова будет гарантировано разрешение.