Notification - об'єкт для показу сповіщеннь.
var notf = new Notification(title, options);
notf - зміна яка отримує новостворений об'єкт Notification.
title - рядок який містить заголовок сповіщення.
options - об'єкт який містить опції сповіщення:
Notification - об'єкт для відображення Web сповіщення.
Web сповіщення відображають повідомлень для користувача поза контекстом веб-сторінки і браузера. Сповіщення відображаються на «робочому столі», що відноситься до якоїсь статичної області дисплея за межами веб-сторінки і може відображатися як:
Web сповіщення відображаються навіть якщо браузер згорнуто.
Де саме будуть відображатися сповіщення залежить від пристрою користувача і операційної системи.
Вигляд сповіщення:
Для того щоб сайт міг відображати сповіщення користувач повинен дати на це дозвіл.
Рішення дозволу користувача міститься у властивості Notification.permission, яка містить рядок з наступними значеннями:
Якщо властивість Notification.permission має значення "granted" тоді можна показувати сповіщення:if(Notification.permission=="granted"){
var n= new Notification('JavaScript', {body:'JavaScript довідка', icon:'/dani/test.png', vibrate:250, lang:'uk-UA', tag:'js'});
}else alert('Notification.permission != "granted"');
Якщо властивість Notification.permission має значення "default" тоді необхідно запитати у користувача дозвіл на показ за допомогою метода Notification.requestPermission():if(Notification.permission=="default")
Notification.requestPermission(function(res){
if(res=='granted')
var n= new Notification('JavaScript', {body:'JavaScript довідка', icon:'/dani/test.png', vibrate:250, lang:'uk-UA', tag:'js'});
}); else alert('Notification.permission != "default"');
Якщо властивість Notification.permission має значення "denied" то це означає що користувач заборонив сайту показувати сповіщення і навіть "примусове" відображення сповіщення браузер буде блокувати.
if(Notification.permission==" denied"){
alert('користувач заборонив показувати сповіщення поточного сайту');
//примусово показуємо сповіщення
var n= new Notification('JavaScript', {body:'JavaScript довідка', icon:'/dani/test.png', vibrate:250, lang:'uk-UA', tag:'js'});
}else alert('Notification.permission != "denied"');
Щоб показати користувачу інформаційне вікно для отримання дозволу викликається метод Notification.requestPermission:
Notification.requestPermission(function(res){alert('результат дозволу користувача: '+res);});
Інформаційне вікно браузера для отримання дозволу для показу сповіщення:
Не всі браузери підтримують Web сповіщення.
Різні браузери можуть не підтримувати деякі властивості, методи, параметри об'єкта Notification.
try{
var n= new Notification('JavaScript', {body:'JavaScript довідка', icon:'/dani/test.png', vibrate:250, lang:'uk-UA', tag:'js', sound:'/dani/test.mp3'});
n.onclick=function(){alert('Користувач клікнув по сповіщенню.');};
n.onerror=function(e){alert('помилка сповіщення '+e);}
}catch(e){alert('Ваш браузер не підтримує конструктор Notification.\n'+e);}
function newNotification(title, options){
//перевіряємо чи підтримує браузер сповіщення
if(window.Notification){
//перевіряємо чи дозволено сповіщення
if(Notification.permission=='granted') var n=new Notification(title, options);
//якщо дозвіл не відомий
else if(Notification.permission=='default') Notification.requestPermission(function(res){if(res=='granted')n=new Notification(title, options);});
else alert('Сповіщення заборонено користувачем!');
}else alert('Ваш браузер не підтримує Notification');
}
newNotification("JavaScript",{body:'приклад сповіщення', icon:'/dani/test.png'});
//функція для події onclick
function clik(){
window.open('http://яваскрипт.укр/зміст');
}
if(window.Notification){
switch(Notification.permission){
// не відомо про дозвіл, тому запитуємо користувача
case 'default':
Notification.requestPermission(function(res){
//якщо користувач підтвердив дозвіл у модальному вікні
if(res=='granted'){
var n=new Notification('JavaScript',{body:'JavaScript Довідка - зміст', icon:'/dani/test.png'});
n.onclick=clik;}
});
break;
//дозвілено показувати сповіщення
case 'granted':
var n=new Notification('JavaScript',{body:'JavaScript Довідка - зміст', icon:'/dani/test.png'});
n.onclick=clik;
break;
default:
alert("Показ сповіщення заборонено користувачем.");
break;
}
}else alert('Ваш браузер не підтримує Notification');