zoukankan      html  css  js  c++  java
  • notification(浏览器通知)

    一、notification简介

    Web Notifications是HTML5 的一个特性,目前我知道的有谷歌浏览器和windows edge对它进行了支持,用于向用户配置和显示桌面通知。

    二、notification方法

    2.1静态方法

    这些方法仅在 Notification 对象中有效。
    Notification.requestPermission()
    用于当前页面想用户申请显示通知的权限。这个方法只能被用户行为调用(比如:onclick 事件),并且不能被其他的方式调用。

    2.2实例方法

    这些方法仅在 Notification 实例或其 prototype 中有效。
    1,Notification.close()
    用于关闭通知。
    Notification 对象继承自 EventTarget 接口。
    2,EventTarget.addEventListener()
    Register an event handler of a specific event type on the EventTarget.
    3,EventTarget.removeEventListener()
    Removes an event listener from the EventTarget.
    4,EventTarget.dispatchEvent()
    Dispatch an event to this EventTarget.

    三、notification举例

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script src="https://cdn.jsdelivr.net/npm/vue"></script>
            <style>
                body{position: relative;}
                .notification {
                     200px;
                    height: 50px;
                    padding: 20px;
                    line-height: 50px;
                    text-align: center;
                    background: #008800;
                    border-radius: 5px;
                    font-size: 30px;
                    position: absolute;
                    left: 45%;
                }
            </style>
        </head>
    
        <body>
            <div class="notification" @click="notifyMe()">notification</div>
        </body>
        <script type="text/javascript">
            var app = new Vue({
                el: '.notification',
                data: {},
                methods: {
                    notifyMe() {
                        // 先检查浏览器是否支持
                        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("你好snowball:", {  
                                dir: "auto",  //auto(自动), ltr(从左到右), or rtl(从右到左)
                                lang: "zh",  //指定通知中所使用的语言。这个字符串必须在 BCP 47 language tag 文档中是有效的。
                                tag: "testTag",  //赋予通知一个ID,以便在必要的时候对通知进行刷新、替换或移除。
                                icon: "http://api.dangmeitoutiao.com/_/boss/0/img/2018/02/12/20180212085006554.JPEG",  //提示时候的图标
                                body: "今天是个好天气"  // 一个图片的URL,将被用于显示通知的图标。
                            }); 
                        }
    
                        // 否则我们需要向用户获取权限
                        else if(Notification.permission !== 'denied') {
                            Notification.requestPermission(function(permission) {
                                // 如果用户同意,就可以向他们发送通知
                                if(permission === "granted") {
                                    var notification = new Notification("你好snowball:", {  
                                        dir: "auto",  //auto(自动), ltr(从左到右), or rtl(从右到左)
                                        lang: "zh",  //指定通知中所使用的语言。这个字符串必须在 BCP 47 language tag 文档中是有效的。
                                        tag: "testTag",  //赋予通知一个ID,以便在必要的时候对通知进行刷新、替换或移除。
                                        icon: "http://api.dangmeitoutiao.com/_/boss/0/img/2018/02/12/20180212085006554.JPEG",  //提示时候的图标
                                        body: "今天是个好天气"  // 一个图片的URL,将被用于显示通知的图标。
                                    }); 
                                }
                            });
                        }
    
                        // 最后,如果执行到这里,说明用户已经拒绝对相关通知进行授权
                        // 出于尊重,我们不应该再打扰他们了
                    }
                }
            })
        </script>
    
    </html>

    clipboard.png

    四、取消允许

    chrome:浏览器设置-->内容设置-->通知-->允许-->点击删除某个网站。
    截图:
    4.1
    clipboard.png
    4.2
    clipboard.png
    4.3
    clipboard.png
    4.4
    clipboard.png
    4.5
    clipboard.png
    兼容:
    clipboard.png

    五、个人体会

    目前只是实现了浏览器端的notification,如果再写个接口,从接口中调取数据,在boss后台做信息管理与是否显示这样就非常棒了。

    六、参考资料

    https://developer.mozilla.org...

  • 相关阅读:
    关于编程
    Python的内建sort方法

    Elgg设置SMTP验证发送邮件教程
    ThinkPHP 和 UCenter接口的冲突
    mac下终端iTerm2配置
    自动化 Amazon EBS 快照生命周期
    AWS Certified Solutions Architect Associate 学习笔记1
    实例存储生命周期 Instance store
    可触发 Lambda 函数的 CloudFront 事件
  • 原文地址:https://www.cnblogs.com/10manongit/p/12825336.html
Copyright © 2011-2022 走看看