HTML5 Desktop notificaties

Nov 10, 2011   //   by Maurice Lourens   //   blog, html(5), javascript  //  No Comments
It is the symbol of notification of error of u...

Image via Wikipedia

Niet helemaal standaard HTML5, maar toch enorm handig voor webkit browsers (Chrome, Safari) zijn de  ”Desktop notifications”. Hiermee kan een site, ook al is deze op de achtergrond, een notificatie sturen aan de rechter-onderhoek van de desktop. Voorkennis: HTML (medium) en Javascript (medium)

Controleren of de browser notificaties ondersteunt

Om te controleren of een browser notificaties ondersteunt kun je in javascript testen of webkitNotifications in de DOM aanwezig is. Dit kan op de volgende manier:

 if (window.webkitNotifications) {
 alert('Je hebt notificatie mogelijkheden!.');
 }

Permissies krijgen

Voordat je notificaties kan gebruiken moet dit goedgekeurd worden door de gebruiker. Dit gebeurd door middel van requestPermission. Er wordt dan in de browser de vraag gesteld of deze site desktop notificaties mag weergeven.

 window.webkitNotifications.requestPermission();

Om te controleren of er goedkeuring is gegeven bestaat de functie checkPermission(). Deze retourneert een 0  als er toestemming is verleend.

 window.webkitNotifications.checkPermission();

Een notificatie aanmaken

De notificatie kan worden aangemaakt met createNotification. Deze accepteerd 3 eigenschappen:

  • url; de url van de afbeelding van de notificatie
  • title: de titel van de notificatie
  • body: de inhoud van de notificatie
 window.webkitNotifications.createNotification(url, title, body);

Het is ook mogelijk een html notificatie te maken door gebruik te maken van createHTMLNotification

 window.webkitNotifications.createHTMLNotification('http://deurl.nl');

Compleet Voorbeeld

Niet om 1 op 1 over te nemen, maar zeker wel waard om naar te kijken. Hieronder een stuk javascript waarin bovenstaande onderdelen zijn meegenomen.

 // alert wanneer notificaties niet worden ondersteund
 if (!window.webkitNotifications) {
 alert('Uw browser ondersteund geen notificaties');
 }

 // bij het klikken op een button
 $('body').click(function(){
 // laat de notificatie zien
 displayNotification();
 });

 // vraag permissie
 function sendPermissionRequest(callback) {
 window.webkitNotifications.requestPermission(callback);
 }

 // toon notificatie
 function displayNotification() {
 // als ik nog geen permissie heb
 if(window.webkitNotifications.checkPermission() > 0){
 // vraag permissie
 sendPermissionRequest(displayNotification);
 } else {
 // ik heb permissie en dus vul het logo, titel en tekst
 var icon = 'link_naar_logo.png';
 var title = 'Mijn titel';
 var body = 'Mijn Tekst!';

// maak de notificatie aan
 var notificatie = window.webkitNotifications.createNotification(icon, title, body);
// laat de notificatie zien
 notificatie .show();
// hide de locatie na 15000 miliseconden
 setTimeout(function(){
 notificatie.cancel();
 }, '15000');
}
}
Enhanced by Zemanta

Leave a comment

Twitter