H5 认识桌面通知 - Notification

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <button onclick="getPermission()">
    获取通知权限
  </button>
</body>
</html>

<script>
  // 检测浏览器是否支持
  if (!("Notification" in window)) {
    alert("抱歉,此浏览器不支持桌面通知!");
  }

  // 检查用户是否同意接受通知
  if (Notification.permission === "granted") {
    setTimeout(() => sendMsg(), 4000)
  } else {
    getPermission();
  }

  // 获取授权
  function getPermission() {
    Notification.requestPermission().then(function(permission) {

      if (permission === 'default') {
        console.log('用户未授权');
      }
      else if (permission === 'denied') {
        console.log('用户拒绝');
      }
      else if (permission === "granted") {
        console.log('用户同意通知')
        setTimeout(() => sendMsg(), 4000)
      }
    });
  }

  function sendMsg() {
    let notification = null;
    const title = "巨蟹座-00年";
    const options = {
      dir: "auto",                                                             // 文字方向
      body: "这是我的好姐妹,可以介绍给你",                                     // 通知主体
      icon: "https://gitee.com/Wzhichao/img/raw/master/uPic/QlkqKm47%20.jpg", // 通知图标
    };

    /**
     * @param {string} title    - 通知标题
     * @param {object} options
                         dir    - [auto, ltr, rtl] 通知方向
                         lang   - 通知的语言
                         body   - 标题正文,显示在标题下方
                         tag    - 赋予通知一个ID,以便在必要的时候对通知进行刷新、替换或移除。
                         icon   - 一个图片的URL,将被用于显示通知的图标
     * */
    notification = new Notification(title, options);

    notification.onshow = function() {
      console.log('通知显示')
    }

    // 点击会把与notification相关联的页面,展示在最前 todo 谷歌http下没反应,尝试使用https
    notification.onclick = function(e) {
      console.log('点击通知')

      // 禁止点击后 页面展示在最前的默认行为
      // e.preventDefault();

      // 打开新标签页
      // window.open('https://developer.mozilla.org/zh-CN/docs/Web/API/notification/onclick', '_blank');
    }

    // 通知会在几秒后自动关闭,自动或手动关闭通知触发 todo 谷歌http下没反应,尝试使用https
    notification.onclose = function() {
      console.log('关闭通知')
    }

    // 谷歌本地运行会触发,不会执行onshow、onclick、onclose
    notification.onerror = function() {
      console.log('通知异常')
    }
  }

  /*
    实例属性
      Notification.title 只读 (moz only)
      Notification.dir   只读
      Notification.lang  只读
      Notification.body  只读
      Notification.tag   只读
      Notification.icon  只读
  * */

  /*
    事件处理
      onclick: 当用户点击通知时被触发
      onshow:  当通知显示的时候被触发
      onerror: 当通知遇到错误时被触发
      onclose: 当用户关闭通知时被触发

      Notification.close() 关闭一个以前显示的通知
  * */
</script>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值