热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

elementUI一次诡异的MessageBox弹框事件

做项目的时候使用MessageBox来提示用户“异地登录”以及“token过期”,直到用户点击了弹框中的“重新登录”按钮,就将用户引导至登录页面。现在

做项目的时候使用 MessageBox 来提示用户 “异地登录” 以及 “token 过期”,直到用户点击了弹框中的“重新登录”按钮,就将用户引导至登录页面。

现在项目中有一个轮询的接口,每15s调用一次,目的是刷取最新的任务信息。正当我有事暂时离开的时候如果 token过期或者账号被挤出来(测试账号是公用的)后用户没有及时点击登录按钮的话,这个弹框就会一直生成,之前没有被关掉的弹框就被覆盖掉了。这个情况大概持续了2min,那么计算一下大概产生了8个没有被及时处理而被覆盖的 MessageBox 弹框。这时候我回来继续处理问题,我发现了界面上的提示,然后我点击“重新登录”,紧接着我导航到产品页面执行新增产品的操作,输入必要信息,ok,一切正常,紧接着点击提交 - 好吧,本着为客户着想的原则,我们在项目中几乎所有涉及新增记录的位置加上了确认框,也包括这里 - 那么如无意外,此时应该弹出一个 MessageBox,询问我“确认提交吗?” 好的,我点击它...纳尼?!居然告诉我 token过期,请重新登录?我才刚刚登录啊,而且这会应该没有人在跟我抢账号才对。吓得我赶紧打开debug,一看不得了,我点击提交的时候压根没有调任何接口,这何其诡异啊。

后来我耗费大量时间做调试,才发现还是因为之前弹出的又没被及时处理的而且被之后弹出的 MessageBox 覆盖掉了的  MessageBox,事实上它并不是被简单的覆盖掉了,确切说是被“挂起”更准确一点,因为在时机合适的时候你仍然能够重新处理它,比如本来有其他新的 MessageBox 弹框生成的时候,事实上弹出的就是那个之前没被处理的 MessageBox。

问题找到了,那就解决它。在我的代码里因为是轮询导致的问题,那么在token过期的时候先弹框提示一次,然后取消轮询就可以了

至于其他方法,比如给 MessageBox 添加 :key="new Date()" 属性来标识是否能解决问题,还请自行测试。


推荐阅读
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 本文详细介绍了如何在BackTrack 5中配置和启动SSH服务,确保其正常运行,并通过Windows系统成功连接。涵盖了必要的密钥生成步骤及常见问题解决方法。 ... [详细]
  • 本文详细介绍了MySQL InnoDB存储引擎中的间隙锁概念及其作用,探讨了它在解决幻读问题方面的关键角色,并解析了间隙锁与其他操作之间的冲突关系。同时,文章还讨论了next-key-lock的构成及应用,以及在不同场景下的优化策略。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文探讨了如何在 React 和 TypeScript 中使用高阶组件(HOC)来消耗上下文,并详细解释了相关类型定义和实现细节。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
author-avatar
js陈富军中草药
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有