8

I am working with browser notifications and because it is not available for every browser I want to check in my JS-code, if it is available.

I took a look in the Mozilla developer section:
https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API/Using_the_Notifications_API

They tell me that I should use this code to check whether a browser has notification support or not:

  if (!("Notification" in window)) {
    alert("This browser does not support system notifications");
  }

I copied that code into my website; the notification still works in the browsers where it worked before but it blocks the execution of other code (as it did before the 'check'-code).

For example: in the edge browser, I get the console error:

 'Notification is undefined'

So what is the preferred method from you to check whether a browser has notification capability?

M--
  • 25,431
  • 8
  • 61
  • 93
binaryBigInt
  • 1,526
  • 2
  • 18
  • 44

2 Answers2

20

The following code would check whether the browser is compatible with the web notification API

if ('Notification' in window) {
  // API supported
} else {
  // API not supported
}
Michael Dadi
  • 362
  • 3
  • 12
  • 2
    @JeroenVannevel the code is checking if the global `window` object has `Notification` as a property on it. If it does, then the current browser does support the Notification API. – TrueKojo Sep 08 '17 at 11:13
6

You should also check for the prefixed versions:

var NotificationIsSupported = !!(window.Notification /* W3C Specification */ || window.webkitNotifications /* old WebKit Browsers */ || navigator.mozNotification /* Firefox for Android and Firefox OS */)

You can read more on how to do this in this article. The article also has a lot of code examples of how to support other devices.

Kitanga Nday
  • 3,517
  • 2
  • 17
  • 29