如果在 2 个浏览器选项卡上,Angularjs 通知显示两次

Posted

技术标签:

【中文标题】如果在 2 个浏览器选项卡上,Angularjs 通知显示两次【英文标题】:Angularjs notification showing twice if on 2 browser tabs 【发布时间】:2020-09-28 07:13:26 【问题描述】:

我正在使用 angular-web-notification 。我的问题是,如果我打开 2 个浏览器选项卡然后收到消息,我会看到显示的两个通知实例。

下面是参考代码。

    webNotification.showNotification(title, 
        body: body,
        onClick: function onNotificationClicked() 
            console.log('Notification clicked.');
        ,
        icon: 'icon.png'
    , function onShow(error, hide) 
        if (error) 
            console.log('Unable to show notification: ' + error.message);
         else 
            console.log('Notification Shown.');
        
    );

你有什么想法吗?

【问题讨论】:

【参考方案1】:

为了防止任何重复的通知使用标签

Notification.tag 通知ID https://developer.mozilla.org/en-US/docs/Web/API/notification

 webNotification.showNotification(title, 
        body: body,
        tag:"some custom unique tag per notification"
        onClick: function onNotificationClicked() 
            console.log('Notification clicked.');
        ,
        icon: 'icon.png'
    , function onShow(error, hide) 
        if (error) 
            console.log('Unable to show notification: ' + error.message);
         else 
            console.log('Notification Shown.');
        
    );

【讨论】:

谢谢@Aian 你能解释一下命名标签的方法吗? [...Array(30)].map(() => Math.random().toString(36)[2]).join('') 你可以使用任何随机字符串当您发送通知时,顺便说一句,标签应该生成服务器端(我假设您从服务器发送通知)与(标题,正文)来的相同来源 再次感谢@Aian【参考方案2】:

在我的情况下,我收到了两次推送通知,但我之前解决了这个问题。 目前,我有一个问题要问你,你使用 fcm 吗?

【讨论】:

不,我使用 websocket。 你能解释一下你的解决方案吗? 嗨!请解释您的解决方案,而不是提出问题,这对我们所有人都会更有用。谢谢!

以上是关于如果在 2 个浏览器选项卡上,Angularjs 通知显示两次的主要内容,如果未能解决你的问题,请参考以下文章

JPList 插件仅在第一个 JQuery UI 选项卡上触发

设计:当管理员和用户在同一浏览器的不同选项卡上登录时使用 `admin_signed_in?` 的逻辑

在 Oracle 表单中的选项卡之间移动项目

在 VSCode 的侧选项卡上查看 HTML 预览

多个浏览器选项卡上的 ViewScoped bean 冲突

脚本无法在非活动选项卡上运行