Web Notifications API-让网页也能像QQ一样实现消息通知

一.什么是Web Notifications API

Web Notifications API允许网页或者是应用程序以系统级别发送在页面外部显示的通知,这样就可以实现即时应用程序在后台或者是空闲状态,Web应用程序也会向用户发送信息。

二.Notification的状态

1.denied(拒绝)------不允许发送通知

2.granted(同意)------允许发送通知

3.default(默认状态)------根据浏览器来决定,一般是询问浏览器,来请求获取发送通知的权限

三.场景实现步骤

1.检查浏览器是否支持

2.首先请求权限,在应用程序可以发送通知之前,需要用户授予应用程序发生通知的权限

3.创建并显示通知

具体实现代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Notification Example</title>
<script>
// 当页面加载时执行
document.addEventListener('DOMContentLoaded', function() {
  // 检查浏览器是否支持Notification API
  if (!("Notification" in window)) {
    alert("This browser does not support desktop notification");
  }
  // 检查用户是否已经授予权限
  else if (Notification.permission === "granted") {
    // 如果已经授权,可以直接显示通知
    showNotification();
  }

  // 如果用户尚未做出选择或默认为'default',则请求权限
  else if (Notification.permission !== "denied") {
    Notification.requestPermission().then(function(permission) {
      // 一旦用户响应,可以显示通知
      if (permission === "granted") {
        showNotification();
      }
    });
  }

  // 显示通知的函数
  function showNotification() {
    var notification = new Notification("Hello", {
      body: "This is a notification message!",
      icon: 'icon.png' // 路径到图标文件
    });

    // 可以添加事件监听器来处理用户交互
    notification.onclick = function() {
      // 这里可以打开新窗口或跳转到特定页面
      window.open('https://www.example.com', '_blank');
    };
  }
});
</script>
</head>
<body>
<h1>Web Notifications API Example</h1>
<p>Check the top-right corner for the notification!</p>
</body>
</html>

四.优缺点:

优点:1.可以定制通知的外观和行为

2.不需要用户授权

3.可以应用到现有的网页设计中

缺点:1.需要适配移动端设备

2.过多的使用可能会影响页面性能。

相关推荐
Chengbei118 小时前
云安全漏洞挖掘SKILL、一站式云漏洞挖掘工具,支持S3爆破、IMDS探测、K8s检测与AK/SK权限利用
前端·人工智能·网络安全·云原生·容器·kubernetes·系统安全
不简说8 小时前
JS 代码技巧 vol.9 — 20 个设计模式在真实项目里的应用
前端·javascript·github
CoderLiu8 小时前
Agent 工程的下一层:为什么「把流程写成图」还不够,还需要 Graph Engineering
前端·人工智能·后端
勇往直前plus9 小时前
Vue3(篇三) Element Plus
前端·javascript·typescript·vue
爱勇宝9 小时前
《道德经》第 8 章:真正高级的能力,像水一样成事
前端·后端·程序员
Revolution619 小时前
数组本身没有 map,为什么还能直接调用:原型链怎样查找属性
前端·javascript·面试
bonechips9 小时前
RAG实战(一):EPUB 加载、文本切割与向量入库
前端·数据库
swipe9 小时前
10|(前端转全栈)库存扣减为什么最容易出事故?SKU、并发与原子更新
前端·后端·全栈
cdcdhj9 小时前
vue3中的watchEffect()监听,什么时候监听,什么时候清理,什么时候停止
前端·javascript·vue.js
huabuyu9 小时前
几百 MB 的文件为什么等几分钟才能打开?文件分片下载与渐进预览原理
前端·javascript