编程技巧│浏览器 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 服务器购买_服务器可以挂什么赚钱

    服务器购买_服务器可以挂什么赚钱原标题:解放双手,什么值得买自动签到京东自动签到给你更多时间享受生活日活作为考核运营狗的重要指标,为了日活,签到成了各大网站和app日活指标达成的重要举措。签到给红包、签到升等级、签到拿好礼,种种签到福利固然好,可苦了佛系玩家,不签到没奖励、不签到没等级没金币各种限制。那么今天就给大家搬运个小福利:自动签到!当然对于itg是不屑的,能分分钟写出代码然后放置服务器自动运行。小白,自然要依靠大佬的…

    2022年9月13日
    0
  • method_exists函数

    method_exists函数
    method_exists(mixed$object,string$method_name)—Checksiftheclassmethodexists
    确认$object类中是否存在$method_name的方法。如果存在返回TRUE;如果不存在返回FALSE.

    2022年7月15日
    14
  • Java详解:淘宝秒杀脚本java

    Java详解:淘宝秒杀脚本java造成雪崩的真实场景1.4.1服务提供者不可用硬件故障:如网络故障、硬盘损坏等。程序的bug:如算法需要占用大量CPU的计算时间导致CPU使用率过高。缓存击穿:比如应用刚重启,短时间内缓存是失效的,导致大量请求直接访问到了数据库,数据库不堪重负,服务不可用。秒杀和大促:服务短时间承载不了那么多请求量。1.4.2重试加大流量用户连续重试:比如用户看到界面上没有响应,所以又操作了一遍,结果又增加了一倍请求量。程序重试机制:比如代码中有多次重试的逻辑,一次失

    2022年6月1日
    31
  • bwapp通关(全完结)

    bwapp通关(全完结)bwapp/A1-Injection/HTMLInjection-Reflected(GET)HTMLInjection-Reflected(POST)HTMLInjection-Reflected(CurrentURL)HTMLInjection-Stored(Blog)iFrameInjectionLDAPInjection(Search)【待开化】———————-bWAPPv2.2—————–

    2022年9月23日
    0
  • JVM内存划分[通俗易懂]

    JVM内存划分[通俗易懂]目录 1.概述2.运行时数据区域 2.1程序计数器2.2Java虚拟机栈2.3本地方法栈2.4Java堆2.5方法区2.6补充2.6.1运行时常量池和Class文件常量池2.6.2直接内存3.HotSpot虚拟机3.1内存划分3.2对象的创建、内存布局、访问定位3.2.1对象的创建3.2.2对象的内存布局…

    2022年5月26日
    46
  • #12# SCCM管理 – 集合

    #12# SCCM管理 – 集合

    2021年6月30日
    76

发表回复

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

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