Notification:requestPermission() 静态方法

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中。

requestPermission()Notification接口的静态方法,它会向用户请求权限,以允许当前来源显示通知。

此方法返回一个Promise,该 Promise 会解析为一个字符串,指示权限是否已授予或拒绝。

语法

js
Notification.requestPermission()

// Deprecated syntax using a callback
Notification.requestPermission(callback)

参数

callback 可选 已弃用

一个可选的回调函数,使用权限值调用。已弃用,建议使用Promise返回值。

返回值

一个Promise,解析为一个字符串,表示用户选择的权限。此字符串的可能值为

granted

用户已明确允许当前来源显示系统通知。

denied

用户已明确拒绝当前来源显示系统通知。

default

用户决策未知;在这种情况下,应用程序将按权限被拒绝的方式执行。

此方法的已弃用版本返回undefined

示例

假设有以下基本 HTML

html
<button onclick="notifyMe()">Notify me!</button>

可以按如下方式发送通知 - 在这里,我们提供了一组相当详细且完整的代码,如果您想首先检查通知是否受支持,然后检查是否已授予当前来源发送通知的权限,然后在发送通知之前根据需要请求权限,则可以使用这些代码。

请注意,应在响应用户交互时发出请求:在下面,该方法是在点击事件处理程序中调用的。

js
function notifyMe() {
  if (!("Notification" in window)) {
    // Check if the browser supports notifications
    alert("This browser does not support desktop notification");
  } else if (Notification.permission === "granted") {
    // Check whether notification permissions have already been granted;
    // if so, create a notification
    const notification = new Notification("Hi there!");
    // …
  } else if (Notification.permission !== "denied") {
    // We need to ask the user for permission
    Notification.requestPermission().then((permission) => {
      // If the user accepts, let's create a notification
      if (permission === "granted") {
        const 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 anymore.
}

我们不再在此页面上显示实时示例,因为 Chrome 和 Firefox 不再允许从跨源<iframe>请求通知权限,其他浏览器也将效仿。要查看实际示例,请查看我们的待办事项列表示例(另请参阅正在运行的应用程序)。

规范

规范
Notifications API 标准
# dom-notification-requestpermission

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅