您现在的位置是:网站首页> HTML&JS

Js实现web应用浏览器通知

  • HTML&JS
  • 2023-09-27
  • 410人已阅读
摘要

Js实现web应用浏览器通知,需要实现通知的可以参考以下代码,为避免犹豫长英文造成排版的混乱,需在代码前加多余的站位文字,以免此类问题的产生

Notification.requestPermission().then(function(result) {

    if (result === 'denied') {

        console.log('拒绝显示系统通知');

        return;

    }

    if (result === 'default') {

        console.log('默认');

        return;

    }

    console.log('允许显示系统通知')

}); 


当用户允许显示系统通知后,就可以发送通知了,这时可以使用 Notification() 构造函数创建一个新通知,这个方法可以传入两个参数,具体如下:

title(必传)定义一个通知的标题,当它被触发时,它将显示在通知窗口的顶部。

options(可选)options 对象包含应用于通知的任何自定义设置选项,常用的选项有:

dir : 文字的方向;它的值可以是 auto(自动), ltr(从左到右), or rtl(从右到左);

lang: 指定通知中所使用的语言。这个字符串必须在 BCP 47 language tag 文档中是有效的;

body: 通知中额外显示的字符串;

tag: 赋予通知一个 ID,以便在必要的时候对通知进行刷新、替换或移除;

icon: 一个图片的 URL,将被用于显示通知的图标;


let notification = new Notification('有一条新通知', {

    dir: 'ltr',

    lang: 'zh-CN',

    body: '通知的正文内容:你的请假流程已批准',

    icon: 'http://localhost/coder/favicon.ico'

});


Notification 通知有四种事件,可以通过监听通知事件来执行不同的操作,具体事件如下:

Notification.onclick:对 click 事件的处理,每当用户点击通知时被触发;

Notification.onshow:对 show 事件的处理,当通知显示的时候被触发;

Notification.onerror:对 error 事件的处理,每当通知遇到错误时被触发;

Notification.onclose:对 close 事件的处理,当用户关闭通知时被触发。


let notification = new Notification('有一条新通知', {

    dir: 'ltr',

    lang: 'zh-CN',

    body: '通知的正文内容:你的请假流程已批准',

    icon: 'http://localhost/coder/favicon.ico'

});


// 监听通知显示事件

notification.onshow = () => console.log('通知已显示');


// 监听通知点击事件

notification.onclick = () => console.log('通知被点击');


// 监听通知被关闭事件

notification.onclose = () => console.log('通知被关闭');


// 监听通知错误事件

notification.onerror = () => console.log('通知出现错误');


发送 Notification 通知代码


function sendNotification(title, body, icon, callback) {

    // 先检查浏览器是否支持

    if (!('Notification' in window)) {

        // IE浏览器不支持发送Notification通知!

        return;

    }

    

    if (Notification.permission === 'denied') {

        // 如果用户已拒绝显示通知

        return;

    }

    

    if (Notification.permission === 'granted') {

        //用户已授权,直接发送通知

        notify();

    } else {

        // 默认,先向用户询问是否允许显示通知

        Notification.requestPermission(function(permission) {

            // 如果用户同意,就可以直接发送通知

            if (permission === 'granted') {

                notify();

            }

        });

    }


    function notify() {

        let notification = new Notification(title, {

            icon: icon,

            body: body

        });

        notification.onclick = function() {

            callback && callback();

            console.log('单击通知框')

        }

        notification.onclose = function() {

            console.log('关闭通知框');

        };

    }

}

下面来测试一下:


sendNotification('下班通知', '今天周五,还有十分钟下班', 'http://localhost/coder/favicon.ico');



Top