屏幕上有多个通知,关闭通知会关闭最后一个通知

Posted

技术标签:

【中文标题】屏幕上有多个通知,关闭通知会关闭最后一个通知【英文标题】:With multiple notifications on screen, closing a notification closes the last notification 【发布时间】:2017-11-22 03:36:08 【问题描述】:

我正在使用 NOTY(通知库)版本 3.0.0 来显示来自 javascript 的通知弹出窗口。

虽然屏幕上有多个通知,但当我单击关闭按钮时,它总是会关闭放置在屏幕上的最后一个通知。我知道这是因为变量 n 总是被示例代码中的最后一个通知对象覆盖。但是,我在文档中没有找到任何关于在多个通知的情况下如何处理通知关闭的线索。

我应该创建一个通知对象数组,然后像 n[i].close() 那样调用 .close() 函数,还是我们有更好的方法来实现这一点? 请帮忙。

示例代码:

var n = new Noty(
    type: 'success',
    layout: 'bottomRight',
    theme: 'relax',
    text: "<b>Testing 2<br/><br/> ",
    timeout: false,
    closeWith: ['button'],
    animation: 
        open: 'noty_effects_open',
        close: 'noty_effects_close'
    ,
    buttons: [
        Noty.button('CLOSE', 'btn btn-error', function () 
            console.log('button 2 clicked');
            n.close();
        )
      ],
).show();

【问题讨论】:

我认为您应该一次只打开 1 个通知。在显示新的之前关闭旧的 这不是我的选择。客户端需要一次显示多个通知。 有一个queue 选项,您可以在其中保持打开多个弹出窗口 是的,您应该使用数组来存储通知。但是,在按钮的回调中访问 Noty 本身会很好。我将在下一个 Noty 版本中实现该增强功能。 【参考方案1】:

我认为您可以使用queue 功能,您可以将多个对象推送到队列变量,并可以使用以下示例操作这些对象

Noty.closeAll(); // Closes all notifications
Noty.closeAll('myCustomQueueName'); // Closes all notifications with queue named 'myCustomQueueName'

Noty.setMaxVisible(10); // Sets the maxVisible notification count for global queue;
Noty.setMaxVisible(10, 'myCustomQueueName'); // Sets the maxVisible notification count for 'myCustomQueueName' queue;

【讨论】:

这是个好主意。但是,队列选项是否旨在用于此目的,我不这么认为?无论如何,如果我们没有任何其他解决方案,这是一个很好的替代方案。

以上是关于屏幕上有多个通知,关闭通知会关闭最后一个通知的主要内容,如果未能解决你的问题,请参考以下文章

关闭推送通知横幅

在Android中处理多个推送通知点击

Android:关闭通知的通知操作

iOS:以编程方式关闭锁定屏幕上显示的通知?

当我的 iPad 关闭时,只收到最后一个推送通知

检测 Jquery Noty 通知是不是已关闭