检查浏览器通知是否可用

9

我正在处理浏览器通知,因为并非所有浏览器都支持它,所以我想在我的JS代码中检查它是否可用。

我查看了Mozilla开发者部分:
https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API/Using_the_Notifications_API

他们告诉我应该使用以下代码来检查浏览器是否支持通知:

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

我将那段代码复制到了我的网站;通知在之前能够运行的浏览器中仍然能够工作,但会阻塞其他代码的执行(就像“check”代码之前一样)。

例如:在Edge浏览器中,我收到控制台错误:

 'Notification is undefined'

那么,您认为最佳方法是什么来检查浏览器是否具备通知能力?


2
如果 ("Notification" in window)false,那么你的代码必须避免使用任何 API。 - Pointy
抱歉,是我的错!我在代码中需要检查两次,但我漏掉了其中一个。 - binaryBigInt
2个回答

21
以下代码将检查浏览器是否与Web通知API兼容。
if ('Notification' in window) {
  // API supported
} else {
  // API not supported
}

2
@JeroenVannevel 这段代码正在检查全局 window 对象是否具有 Notification 属性。如果是,则当前浏览器支持 Notification API。 - TrueKojo

6

您还应该检查前缀版本:

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

您可以在这篇文章中了解如何做到这一点。该文章还包含了许多支持其他设备的代码示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接