You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置requireInteraction的Notification如何判断是否仍在展示?

你可以通过监听Notification实例的close事件,配合全局变量存储当前活跃的通知实例来实现状态判断,修改后的代码如下:

// 全局存储当前活跃的通知实例
let activeNotification = null;

function show(text) {
  // 已有活跃通知时直接返回
  if (activeNotification) return;

  const notification = new Notification(text, {
    requireInteraction: true
  });

  // 缓存当前通知实例
  activeNotification = notification;

  // 监听通知关闭事件,重置状态
  notification.addEventListener('close', () => {
    activeNotification = null;
  });

  // 可选:监听点击事件,点击通知后关闭并重置状态
  notification.addEventListener('click', () => {
    notification.close();
    activeNotification = null;
  });
}

// 权限申请成功后再调用通知展示逻辑
Notification.requestPermission().then(permission => {
  if (permission === 'granted') {
    show("first");
    setTimeout(() => show("second"), 1000);
  }
});

说明

  • 原生Notification实例创建后会暴露close事件,用户手动关闭通知、或者代码主动调用close方法时都会触发该事件,在事件回调中清空缓存的实例即可准确判断当前是否有活跃通知。
  • 你还可以根据业务需求监听error等其他事件,覆盖异常场景下的状态重置逻辑。
  • 如果需要跨标签页判断通知活跃状态,可以配合localStorage存储状态标识,在close事件触发时同步更新存储的状态即可。

内容的提问来源于stack exchange,提问作者kofifus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:57:02