La interfaz Notification
de la Notifications API se usa para configurar y mostrar notificaciones de escritorio al usuario. La apariencia y las funcionalidad especificas de esta notificacion varia a traves de las distintas plataformas, pero generalmente esta plataformas proveen un camino para proveer informacion al usuario de manera asincronica.
Constructor
Notification()
- Crea una nueva instancia del objecto
Notification
.
Propiedades
Propiedades Estáticas
Estas propiedades solo estan disponibles en el objecto Notification
en sí mismo.
Notification.permission
Read only- Una cadena que representa el permiso actual para mostrar notificaciones. Los valores posibles son:
denied
(El usuario rechaza que las notificaciones sean mostradas).granted
(El usuario acepta que las notificaciones sean mostradas).default
(La elección del usuario es desconocida por lo tanto el navegador actuará como si el valor fuese denied).
Propiedades de Instancia
Estas propiedades solo están disponibles en instancias del objecto Notification
.
Notification.actions
Read only- Arreglo de acciones de la notificación, como se especifica en el parámetro de opciones del constructor.
Notification.badge
Read only- URL de la imagen usada para representar la notificación cuando no hay espacio suficiente para mostrarla.
Notification.title
Read only- El título de la notificación como está especificado en el parámetro options del constructor.
Notification.dir
Read only- La dirección del texto de la notificación como está especificado en el parámetro options del constructor.
Notification.lang
Read only- El código del lenguaje de la notificación como está especificado en el parámetro options del constructor.
Notification.body
Read only- The body string de la notificación como está especificado en el parámetro options del constructor.
Notification.tag
Read only- El ID de la notificación (si hay) como está especificado en el parámetro options del constructor.
Notification.icon
Read only- La URL de la imagen usada como ícono de la notificación como está especificado en el parámetro options del constructor.
Notification.image
Read only- URL de una imagen para mostrar como parte de la notificación, al igual que se especifica en el parámetro de opciones del constructor.
Notification.data
Read only- Retorna un clon estructurado de los datos de la notificación.
Notification.requireInteraction
Read only- Un
Boolean
indicando en dispositivos pantallas lo suficientemente grandes, una notificación debería permanecer activa hasta que el usuario haga click o la descarte. Notification.silent
Read only- Especifica si la notificación debería ser silenciada, por ejemplo sin generar sonidos o vibraciones, independientemente de la configuración del dispositivo.
Notification.timestamp
Read only- Especifica el tiempo en la cual una notificación fué creada o aplicable (pasado, presente o futuro).
Notification.vibrate
Read only- Especifica un patrón de vibración para dispositivos que disponen de hardware para emitirlo.
Propiedades no soportadas
Las siguientes propiedades están listadas en las especificaciones más actualizadas, pero aún no están soportadas por los navegadores. Es aconsejable verificarlas regularmente para ver si el estado de ellas ha sido actualizado, y háganos saber si encuentra información desactualizada.
Notification.noscreen
Read only- Specifies whether the notification firing should enable the device's screen or not.
Notification.renotify
Read only- Especifica si se debe notificar al usuario después de que una notificación nueva reemplace a una anterior.
Notification.sound
Read only- Especifica un recurso de sonido para reproducir cuando se activa la notificación, en lugar del sonido de notificación del sistema predeterminado.
Notification.sticky
Read onlyNotification.vibrate
Read only-
Especifica un patrón de vibración para los dispositivos con hardware de vibraciones para emitir.
Manejador de Eventos(Event Handler)
Notification.onclick
- Un manejador para el
click
event. Sera inicializado cada vez que el usuario de click en la notificacion. Notification.onerror
- A handler for the
error
event. It is triggered each time the notification encounters an error.
Obsolete handlers
The following event handlers are still supported as listed in the browser compatibility section below, but are no longer listed in the current spec. It is safe therefore to assume they are obsolete, and may stop working in future browser versions.
Notification.onclose
- A handler for the
close
event. It is triggered when the user closes the notification. Notification.onshow
- A handler for the
show
event. It is triggered when the notification is displayed. -
Methods
Static methods
Estos métodos están disponibles solo en el objeto deNotificación
en sí. Notification.requestPermission()
- Solicita permiso del usuario para mostrar notificaciones.
-
Instance methods
These properties are available only on an instance of the
Notification
object or through itsprototype
. TheNotification
object also inherits from theEventTarget
interface. Notification.close()
- Programmatically closes a notification.
-
Example
Assume this basic HTML:
<button onclick="notifyMe()">Notify me!</button>
It's possible to send a notification as follows — here we present a fairly verbose and complete set of code you could use if you wanted to first check whether notifications are supported, then check if permission has been granted for the current origin to send notifications, then request permission if required, before then sending a notification.
function notifyMe() { // Let's check if the browser supports notifications if (!("Notification" in window)) { alert("This browser does not support desktop notification"); } // Let's check whether notification permissions have already been granted else if (Notification.permission === "granted") { // If it's okay let's create a notification var notification = new Notification("Hi there!"); } // Otherwise, we need to ask the user for permission else if (Notification.permission !== 'denied') { Notification.requestPermission(function (permission) { // If the user accepts, let's create a notification if (permission === "granted") { var notification = new Notification("Hi there!"); } }); } // At last, if the user has denied notifications, and you // want to be respectful there is no need to bother them any more. }
In many cases, you don't need to be this verbose. For example, in our Emogotchi demo (see source code), we simply run
Notification.requestPermission
regardless to make sure we can get permission to send notifications (this uses the newer promise-based method syntax):Notification.requestPermission().then(function(result) { console.log(result); });
Then we run a simple
spawnNotification()
function when we want to fire a notification — this is passed arguments to specify the body, icon and title we want, then it creates the necessaryoptions
object and fires the notification using theNotification()
constructor.function spawnNotification(theBody,theIcon,theTitle) { var options = { body: theBody, icon: theIcon } var n = new Notification(theTitle,options); }
Specifications
Specification Status Comment Notifications API Living Standard Living standard Browser compatibility
We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari Basic support 5webkit[1]
224.0 moz[2]
22Sin soporte 25 6[3] icon
5webkit[1]
224.0 moz[2]
22Sin soporte 25 Sin soporte Available in workers (Yes) 41.0 (41.0) ? ? ? silent
43.0 Sin soporte Sin soporte Sin soporte Sin soporte noscreen
,sticky
Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte sound
(Yes) Sin soporte Sin soporte Sin soporte Sin soporte renotify
50.0 Sin soporte Sin soporte Sin soporte Sin soporte Promise-based Notification.requestPermission()
? 47.0 (47.0) ? ? ? Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android Basic support ? (Yes)
4.0moz[2]
221.0.1moz[2]
1.2Sin soporte ? Sin soporte (Yes)
icon
? (Yes) 4.0moz[2]
221.0.1moz[2]
1.2Sin soporte ? Sin soporte (Yes) Available in workers ? (Yes) 41.0 (41.0) ? ? ? ? (Yes) silent
Sin soporte 43.0 Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte 43.0 noscreen
,sticky
Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte sound
Sin soporte (Yes) Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte (Yes) renotify
Sin soporte 50.0 Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte Promise-based Notification.requestPermission()
? ? 47.0 (47.0) ? ? ? ? ? [1] Before Chrome 22, the support for notification followed an old prefixed version of the specification and used the
navigator.webkitNotifications
object to instantiate a new notification.Before Chrome 32,
Notification.permission
was not supported.Before Chrome 42, service worker additions were not supported.
Starting in Chrome 49, notifications do not work in incognito mode.
[2] Prior to Firefox 22 (Firefox OS <1.2), the instantiation of a new notification must be done with the
navigator.mozNotification
object through itscreateNotification
method.Prior to Firefox 22 (Firefox OS <1.2), the Notification was displayed when calling the
show
method and supported only theclick
andclose
events.Nick Desaulniers wrote a Notification shim to cover both newer and older implementations.
One particular Firefox OS issue is that you can pass a path to an icon to use in the notification, but if the app is packaged you cannot use a relative path like
/my_icon.png
. You also can't usewindow.location.origin + "/my_icon.png"
becausewindow.location.origin
is null in packaged apps. The manifest origin field fixes this, but it is only available in Firefox OS 1.1+. A potential solution for supporting Firefox OS <1.1 is to pass an absolute URL to an externally hosted version of the icon. This is less than ideal as the notification is displayed immediately without the icon, then the icon is fetched, but it works on all versions of Firefox OS.When using notifications in a Firefox OS app, be sure to add the
desktop-notification
permission in your manifest file. Notifications can be used at any permission level, hosted or above:"permissions": { "desktop-notification": {} }
[3] Safari started to support notification with Safari 6, but only on Mac OSX 10.8+ (Mountain Lion).
See also
Using the Notifications API