求助各位大佬!存在多个通知提示时,鼠标悬停要求不进行计时,鼠标移开显示10s,利用notification

发布于 2022-09-13 00:44:58 字数 2987 浏览 22 评论 0

有一个需求,我利用elementui的notification,进行弹出多条消息,我利用定位将多条信息进行了重叠在一个位置上,这样点击关闭 就会展示下一条,但是现在要求鼠标悬停时候不允许关闭。这导致因为多条消息重叠的原因,导致只有在最上面的消息 鼠标悬停计时关闭,它下面的那些消息依然计时,就导致鼠标悬停超过时长后一旦关闭最上面的消息,下面的消息因为计时超过也会消失了,有什么办法可以解决吗 ,变量needReadMessage是接口循环的,我试了终止循环,但是不行,这怎么让这一个个弹出来啊

this.needReadMessage.forEach(item => {
                            this.noticeflag = false;
                            const h = this.$createElement;
                            if (item.messageType == 3) {
                                this.$notify({
                                    title: item.messageTypeWithCluture,
                                    customClass: 'shishi',
                                    message: h('p', null, [
                                        h('span', null, item.messageContent),
                                        h(
                                            'a',
                                            {
                                                style: {
                                                    display: 'block',
                                                    cursor: 'pointer',
                                                    color: 'blue',
                                                    position: 'absolute',
                                                    right: '29px',
                                                    bottom: '3px'
                                                },
                                                on: {
                                                    click: this.clickBtn
                                                }
                                            },
                                            '查看'
                                        )
                                    ]),
                                    onClick() {
                                        _this.mesClick(item); //自定义回调,message为传的参数
                                    },
                                    onClose() {
                                        _this.closeOne();
                                    },
                                    offset: 0,
                                    duration: 10000
                                });
                            } else {
                                // 没有链接的信息不显示‘查看’
                                this.$notify({
                                    title: item.messageTypeWithCluture,
                                    customClass: 'shishi',
                                    message: h('p', null, [h('span', null, item.messageContent)]),
                                    offset: 0,
                                    duration: 10000,
                                    onClose() {
                                        _this.closeOne();
                                    }
                                });
                            }                    
                    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

℉服软 2022-09-20 00:44:58

当前现象的不合理之处在于,底部信息没有展示就直接消失了。
原因在于,底部信息的计时是从创建DOM开始的,正确的方式应该是从信息被展示开始计时。

了解上面两个点,矛盾就很清晰了。有两种方案:

  1. 限制弹出信息的频率,用消息队列提供缓冲,避免生产速度太快导致来不及消费。生成信息时,推入队列;当顶层信息被关闭,再弹出下一层信息。
    队列可以用数组实现,关闭消息时去数组查询剩余的消息即可。
  2. 不限制弹出信息的频率,但只有当前消息被展示时才开始计时。这里需要获取【信息在顶层展示】的状态,实现上可能有些不便。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文