H5 Notifications在不同浏览器中的行为

Notifications API的使用可参看:
https://notifications.spec.whatwg.org/#example-08e8ecea
https://developer.mozilla.org/en-US/docs/Web/API/notification
尽量参看英文,中文有翻译不完整甚至有不准确的地方。

最近发现Notifications在自己的谷歌浏览器(85.0.4183.83)上使用发生了与之前不太相同的地方,就是无法触发onclick事件了!!!

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button id="button">测试Notification</button>
    <div id="text"></div>
    <script>
        var button = document.getElementById('button');
        var text = document.getElementById("text");

        button.onclick = function () {
            if (Notification.permission == "granted") {
                popNotice();
            } else if (Notification.permission != "denied") {
                Notification.requestPermission(function (permission) {
                    popNotice();
                });
            }
        };

        var popNotice = function () {
            if (Notification.permission == "granted") {

                var n = new Notification("系统通知:", {
                    //tag: "testTag",
                    icon: "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top_86d58ae1.png",
                    body: 'hello world'
                });

                n.onshow = function (event) {
                    console.log(`on show, time: ${new Date().toISOString()}`);
                };

                n.onclick = function (event) {
                    console.log(`on click, time: ${new Date().toISOString()}`);
                };

                n.onclose = function (event) {
                    console.log(`on close, time: ${new Date().toISOString()}`);
                };
            }
        };
    </script>

</body>

</html>

于是猜想是不是自己的代码有问题,就对比下手头现有的浏览器行为,发现不同的浏览器对Notifications的支持都有不同。

谷歌浏览器(85.0.4183.83)

谷歌浏览器已经无法触发onclick事件,只能触发onshow事件,并且触发onclose的事件距点击时间较长(消息提示出现后便点击),如图所示:
谷歌浏览器

Edge(Microsoft Edge 44.18362.449.0)

Edge浏览器可以触发onshow,onclick,onclose事件,点击消息内容,会触发onclick事件,消息会自动关闭。点击右上角的符号,会触发onclose事件消息会自动关闭。如图所示:
Edge浏览器

Firefox(78.0.2 (64 位))

火狐浏览器可以触发onshow,onclick,onclose事件,点击消息内容,会触发onclick,onclose事件,消息会自动关闭。点击右上角的符号,会触发onclose事件消息会自动关闭。如图所示:
火狐浏览器

双核浏览器

火狐浏览器可以触发onshow,onclick,onclose事件,但是点击消息内容,消息不会自动关闭,需要手动添加关闭方法,不然点击消息,消息框永远不会关闭,代码如下:

                n.onclick = function (event) {
                    console.log(`on click, time: ${new Date().toISOString()}`);
                    n.close();
                };

添加完关闭方法后,与火狐浏览器行为相同。
双核浏览器

那么问题来了,谷歌浏览器不支持Notifications 的onclick回调了?onclose回调时间也不正常。是我下载的浏览器有问题还是谷歌真的做了这样子的改动?我也不知道了,希望有大佬可以指点一二…

如果文章能够对您有所帮助,我便感到十分荣幸。如若文章能被您点赞,那便是万分荣幸。

个人微信:iotzzh
公众号:前端微说
个人网站:www.iotzzh.com

  • 21
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值