编程技巧│浏览器 Notification 桌面推送通知

编程技巧│浏览器 Notification 桌面推送通知可视化桌面通知,跟遗忘说再见

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

? 什么是 Notification

  • Notification 是浏览器最小化后在桌面显示消息的一种方法
  • 类似于 360 等流氓软件在桌面右下角的弹窗广告
  • 它与浏览器是脱离的,消息是置顶的
编程技巧│浏览器 Notification 桌面推送通知

? 弹窗授权

  • 授权当前页面允许通知
  • 可以通过检查只读属性 Notification.permission 的值来查看你是否已经有权限
  • default: 用户还未被询问是否授权,可以通过 Notification.requestPermission() 可以询问用户是否允许通知
  • granted: 用户点击允许后的状态
  • denied: 用户点击拒绝后的状态,通知框不可用
Notification.requestPermission()
编程技巧│浏览器 Notification 桌面推送通知

? 弹窗使用

  • 可以通过 new Notification($title, $options) 使用通知推送功能
  • title: 一定会被显示的通知标题
  • options: 可选,一个被允许用来设置通知的对象。它包含以下属性:
  • dir: 文字的方向;它的值可以是 auto(自动), ltr(从左到右), or rtl(从右到左)
  • lang: 指定通知中所使用的语言。
  • body: 通知中额外显示的字符串
  • tag: 赋予通知一个ID,以便在必要的时候对通知进行刷新、替换或移除。
  • icon: 一个图片的URL,将被用于显示通知的图标。
new Notification("温馨提醒", {
	body: "飞兔小哥送你一份奖品待领取",
	icon: "https://autofelix.github.io/autofelix/u/favicon.ico",
	data: "https://autofelix.blog.csdn.net/"
});

? 浏览器支持检测

  • 使用通知推送功能前,需要先检查浏览器是否支持
  • 可以通过 "Notification" in window 方法去检测
  • 在浏览器支持的前提下,判断用户是否授权允许通知,如果还未授权,可以弹出授权框
  • 如果用户已经拒绝过,我们就不去打扰用户了
function notify() {
    // 先检查浏览器是否支持
    if (!("Notification" in window)) {
        alert("This browser does not support desktop notification");
    }

    // 检查用户是否同意接受通知
    else if (Notification.permission === "granted") {
        // If it's okay let's create a notification
        var notification = new Notification("Hi there!");
    }

    // 否则我们需要向用户获取权限
    else if (Notification.permission !== "denied") {
        Notification.requestPermission().then(function (permission) {
            // 如果用户接受权限,我们就可以发起一条消息
            if (permission === "granted") {
                var notification = new Notification("Hi there!");
            }
        });
    }

    // 最后,如果执行到这里,说明用户已经拒绝对相关通知进行授权
    // 出于尊重,我们不应该再打扰他们了
}

? 授权回调

  • 该通知有四个回调方法
  • onshow: 在通知展示的时候调用
  • onclose: 在通知关闭的时候调用
  • onclick: 在通知点击的时候调用
  • onerror: 在通知出错的时候调用
var notification = new Notification("温馨提醒", {
    body: "飞兔小哥送你一份奖品待领取",
    icon: "https://autofelix.github.io/autofelix/u/favicon.ico",
    data: "https://autofelix.blog.csdn.net/"
});

notification.onshow = function (event) {
    console.log("show : ", event);
};

notification.onclose = function (event) {
    console.log("close : ", event);
};

notification.onclick = function (event) {
    console.log("click : ", event);
    // 当点击事件触发,打开指定的url
    window.open(event.target.data)
    notification.close();
};

notification.onerror = function (event) {
    console.log("close : ", event);
};

? 3秒后关闭弹窗

  • 实现3秒后关闭弹窗的功能
var notification = new Notification('标题');
notification.onshow = function () {
    setTimeout(function () {
        notification.close();
    }, 3000);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170855.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月16日 下午7:16
下一篇 2022年8月16日 下午7:16


相关推荐

  • idea2021激活码?【在线注册码/序列号/破解码】

    idea2021激活码?【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    62
  • linux命令_linux基本命令的使用

    linux命令_linux基本命令的使用创建petalinux工程:petalinux-create-tproject–templatezynq-nzynq_linux配置petalinux工程:petalinux-config–get-hw-description/mnt/hgfs/VMShare/ZYNQ7035_Linux/ZYNQ7035_Linux.sdk/重新配置petalinux工程:petalinux-config配置Linux内核:petalinux-config-ckernel配置Lin

    2025年10月29日
    4
  • 虚拟机配置IIS服务

    虚拟机配置IIS服务虚拟机配置 IIS 服务器 IIS 简介配置 windows2003 的相关服务查看 XP 客户端服务端配置默认网页 XP 客户端访问 IIS 简介 IIS 互联网信息服务 英语 InternetInfo 简称 IIS 是由微软公司提供的基于运行 MicrosoftWin 的互联网基本服务 即发布网站的服务器 在此处我们用 windows2003 作为 IIS 服务器 windowsXP 作为一个客户端 windows2003 的 ip 设置为 10 1 1 1 24 windowsXP 的 ip 设置为 10

    2026年3月18日
    2
  • Java,PHP,Python,WebApp开发教程视频资料汇总

    Java,PHP,Python,WebApp开发教程视频资料汇总教程名称 免费获取资源关注 Java 开发教程视频 SSM 到 SpringBoot 从零开发校园商铺平台 JavaSpringBo 企业微信点餐系统 Java 秒杀系统方案优化 高性能高并发实战 SpringBoot 技术栈博客企业前后端 JavaSSM 快速开发仿慕课网在线教育平台 SpringBoot 带前后端渐进式开发企业级博客系统 Java 大牛带你从 0 到上线开发企业级电商项目慕课

    2026年1月16日
    2
  • armv6 armv7 armv7s架构的区别[通俗易懂]

    armv6 armv7 armv7s架构的区别[通俗易懂]arm结构处理器,几乎所有的手机都基于arm,其在嵌入式系统中应用非常广泛。 ARM处理器因为低功耗和小尺寸而闻名,它的性能在同等功耗的产品中也很出色。这里我们注意一点,模拟器并不运行arm代码,软件会被编译成x86可以运行的指令。只有在目标设备上,才会执行设备对应的指令集。 ARMv6设备包括iPhone,iPhone2,iPhone3G以及第一代和第二代iPodTo

    2022年6月25日
    28
  • python执行测试用例_python自动生成测试用例

    python执行测试用例_python自动生成测试用例前言通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。pytest默认运行用例的顺序是按模块和用例命名的ASCII编码

    2022年7月30日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号