当前位置: 首页 > 知识库问答 >
问题:

前端 - antd message 当浏览器在后台时弹出会在切到前台才关闭 有解决办法吗?

汤跃
2023-10-07

我5秒弹一次message 浏览器切到后台一段时间后 再切到前台 会看见一大排消息然后一起隐藏,我看onClose事件在后台也是正常调用的

共有3个答案

井旺
2023-10-07

可以用 document.hidden 判断一下当前标签页是否处于活动状态,也就是大概这样

setInterval(() => document.hidden && message.success('Hello'), 5000)

希望能帮助到你。

邵浩大
2023-10-07

切换到其他页面的时候,对 DOM 的操作会被“攒起来”,等切回来的时候一波按顺序执行。
这就是一些比较老的网页上,原本看着还正常的动画,会在重新切回来的一瞬间非常“鬼畜”地加速执行的原因。
可以判断一下页面是否可见,只在可见的时候弹出信息:

if(document.visibilityState  === "visible"){  message.info("hahaha");}
印劲
2023-10-07

这个问题似乎是关于antd的Message组件在浏览器后台时弹窗不关闭的问题。这可能是因为浏览器在后台时,消息框的关闭事件(如onClose或onClickOutside)可能无法正常触发。

目前,解决这个问题的一个方案是,当浏览器进入后台时,通过一些方式来确保你的应用程序知道这个事件并做出相应的处理。具体来说,可以使用window对象的blurfocus事件来监听浏览器的前后台状态。

下面是一个基本的示例:

import { Message } from 'antd';import { useEffect } from 'react';const MyComponent = () => {  useEffect(() => {    const handleBlur = () => {      // 当浏览器失去焦点时,关闭消息框      Message.close();    };    const handleFocus = () => {      // 当浏览器重新获得焦点时,如果需要,可以重新打开消息框    };    // 监听浏览器的前后台状态    window.addEventListener('blur', handleBlur);    window.addEventListener('focus', handleFocus);    // 清理函数,在组件卸载时移除事件监听    return () => {      window.removeEventListener('blur', handleBlur);      window.removeEventListener('focus', handleFocus);    };  }, []); // 依赖项数组为空,这意味着只在组件挂载和卸载时运行这个副作用  // ...你的其他代码...};

这只是一个基本的示例,你可能需要根据具体的使用情况来调整代码。同时,请注意,不同的浏览器可能会有不同的行为,所以你可能需要测试不同的浏览器以确保兼容性。

 类似资料:
  • 问题内容: 如何关闭当前的浏览器标签?以下无效。 要么 要么 问题答案: 试试这个: 来源:https : //vaadin.com/forum/#!/ thread/ 235330

  • 我点击日历弹出 我想看到对应的标签名 但是当我点击展开标签名dom上 组件就没了 我想看到标签名后改样式成这样

  • 访问者订阅,我检索FCM令牌。 我使用POST将此消息推送到https://fcm.googleapis.com/fcm/send 它总是说成功=1, 但事实上,只有当网站关闭时,信息才会被传递! 当我关闭选项卡并再次推送消息时,消息被传递。 此外,如果我打开网站或我去该领域的任何地方,如http://example.org/whatever/,但仍返回“success=1”。 测试了Chrome

  • 本文向大家介绍前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法?相关面试题,主要包含被问及前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法?时的应答技巧和注意事项,需要的朋友参考一下 首先定义两个Activity,分别为A和B。 完整顺序为:A调用onCreate()方法 ---> onSt

  • 前端 Front-end 和后端 Back-end 是描述进程开始和结束的通用词汇。前端作用于采集输入信息,后端进行处理。 这种说法给人一种很模糊的感觉,但是他说得又很对,它负责视觉展示。在 MVC 或者 MVP 结构中,负责视觉显示的部分只有 View 层,而今天大多数所谓的 View 层已经超越了 View 层。前端是一个很神奇的概念,但是而今的前端已经发生了很大的变化。你引入了 Backbo

  • 如题,实时音视频TRCT,小程序切后台如何关闭声音呢?调用官方的pause暂停视频流没有任何效果,麻烦大佬解答 https://cloud.tencent.com/document/product/647/17018