electron报错Error: Object has been destroyed

news2024/10/6 4:14:05

问题描述

在 Electron 中,当一个窗口被销毁后,与该窗口相关联的 JavaScript 对象也会被销毁,再次访问已被销毁的窗口对象时,会导致 Error: Object has been destroyed 错误。
例如之前在写多窗口pinia状态同步 / 多窗口样式同步的时候,有如下代码:

  • 假如样式同步的过程中,我已经取到了当前所有的窗口,但在我循环通知其他窗口更新的过程中,某个窗口关闭了[销毁了],此时就会报错
    在这里插入图片描述

解决方案

为了避免该错误的发生,需要在窗口对象被销毁时,取消订阅所有与该窗口相关的事件,并在需要访问窗口对象时,先检查窗口对象是否已经被销毁。
1.创建窗口的时候,补充销毁监听:

  currentWindow.on("closed", () => {
    // 在窗口对象被关闭时,取消订阅所有与该窗口相关的事件
    currentWindow.removeAllListeners();
    currentWindow= null;
  });

2.调用窗口方法前,先进行销毁判断

 !currentWin.isDestroyed

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/706413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis【实战篇】---- 分布式锁

Redis【实战篇】---- 分布式锁 1. 基本原理和实现方式对比2. Redis分布式锁的实现核心思路3. 实现分布式锁版本一4. Redis分布式锁误删情况说明5. 解决Redis分布式锁误删问题6. 分布式锁的原子性问题7. Lua脚本解决多条命令原子性问题8. 利用Java代码调试Lua脚本改造分布式锁 1…

Python 利用深度学习识别空间推理验证码(一)

注意:本文会比较长,因为空间推理验证码本身比较复杂,我会详细的讲解,我是如何一步一步拆分空间推理的思想去实现的,另外,这里只介绍第一种思想来解决空间推理验证码,实际上,解决该验证码的方法也比较多,这第一种,我会讲解的比较简单,通俗易懂。 注意:下面数据集使用…

Redis主从/哨兵机制原理介绍

目录 ​编辑 一、主从复制 1.1 什么是主从复制 1.2 主从复制的作用 1.3 主从复制原理 1.3.1 全量复制 1.3.2 增量复制 1.3.3 同步流程 二、哨兵机制 2.1 哨兵机制介绍 2.1.1 集群逻辑图 2.1.2 哨兵机制实现的功能 2.2 哨兵机制原理 2.2.1 监控 2.2.2 下线 2.2.2.1 下线流程 2.…

C# csc构建dll 和 csc构建时指定dll

新建一个mydll.cs; using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace myDLL {public class MyMath{public int add(int x, int y){return x y;}public int sub(int x, int y){return x - y;}} } 用下图命令构建…

MySQL高可用

MySQL高可用 一、高可用 1.什么是MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能…

LeetCode·每日一题·2490. 回环句·模拟

作者:小迅 链接:https://leetcode.cn/problems/circular-sentence/solutions/2325227/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-x65e/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权&#xff0…

fusionpbx简介

概述 fusionpbx是以freeswitch作为底层框架开发而成的开源PBX,在freeswitch的基础上,优化了GUI的易用性。 fusionpbx可用作高可用性的单租户或基于域的多租户 PBX、运营商级交换机、呼叫中心服务器、传真服务器、voip服务器、语音邮件服务器、会议服务…

admin配置k8s

系列文章目录 文章目录 系列文章目录一、实验1.实验要求2.3. 所有节点安装docker4.所有节点安装kubeadm,kubelet和kubectl5.部署K8S集群6./所有节点部署网络插件flannel7./在master节点查看节点状态 总结 一、实验 1.实验要求 master(2C/4G&#xff0c…

Maven的安装过程

参考地址 https://www.cnblogs.com/hanliukui/p/16842734.html 注意下载包体是bin的包体:Maven – Download Apache Maven 然后ok

echart 绘制一个基础的中国地图

echart&#xff0c;绘制一个基础的中国地图 代码示例 <template><div id"china_map_box"><div id"china_map"></div></div> </template><script> import * as echarts from echarts import chinaJson from ./…

《综合与Design_Compiler》学习笔记——第一章综合综述 第二章verilog语言结构到门级的映射 第三章 使用DC进行综合

文章目录 前言一、综合综述1、综合2、综合的不同层次&#xff08;1&#xff09;逻辑级综合&#xff08;2&#xff09;RTL级综合&#xff08;3&#xff09;行为级综合 二、verilog语言结构到门级的映射三、使用DC进行综合1、定义2、写时序约束3、写环境约束&#xff08;1&#x…

Vite创建vue3+ts+pinia项目流程

Vite 需要 Node.js 版本 14.18&#xff0c;16。然而&#xff0c;有些模板需要依赖更高的 Node 版本才能正常运行&#xff0c;当你的包管理器发出警告时&#xff0c;请注意升级你的 Node 版本(这里建议node版本在16以上)&#xff0c; 推荐使用 pnpm 包管理工具 管理项目 包安装…

Hive 之 beeline 客户端连接

beeline 客户端连接 Hive beeline -u jdbc:hive2://hadoop10:10000 -n hive 我们下期见&#xff0c;拜拜&#xff01;

【Verilog HDL】FPGA-testbench基础知识

&#x1f389;欢迎来到FPGA专栏~testbench基础知识 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能…

前端Vue自定义勾选协议组件 可用于登录 注册等场景

前端Vue自定义勾选协议组件&#xff0c; 可用于登录 注册等场景&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13299 效果图如下&#xff1a; # cc-protocolBox #### 使用方法 使用方法 <!-- agree&#xff1a;是…

【HTML5】svg 绘制图形

文章目录 一、基本介绍二、用法详解2.1、矩形&#xff08;rect&#xff09;2.2、圆形&#xff08;circle&#xff09;2.3、椭圆&#xff08;ellipse&#xff09;2.4、线条&#xff08;line&#xff09;2.5、折线&#xff08;polyline&#xff09;2.6、多边形&#xff08;polygo…

Redis 发布/订阅介绍

目录 ​编辑 一、发布与订阅 6.1 频道 6.1.1 发布 6.1.2 订阅 6.1.3 数据结构 6.1.3.1 订阅&#xff08;channel&#xff09; 6.1.3.2 发布 6.1.3.3 退订 6.2 模式&#xff08;pattern&#xff09; 6.2.1 发布 6.2.2 订阅 6.2.3 数据结构 6.2.3.1 发布 6.2.3.2 订阅 6.2.3.…

登录远程Linux桌面

远程桌面连接主要使用两种协议&#xff0c;一种是Windows上RDP协议&#xff0c;第二种是VNC协议&#xff0c;从使用效果来看&#xff0c;vnc更优秀。 一、VNC 使用x11vnc 1.安装x11vnc sudo apt install x11vnc 2.启动x11vnc x11vnc -passwd orangepi -display :0 -forever…

【线程池】ScheduledExecutorService接口和ScheduledThreadPoolExecutor定时任务线程池使用详解

目录 〇、简介 0.1 ScheduledExecutorService 和 Timer 的区别 一、什么是ScheduledExecutorService&#xff1f; 二、ScheduledThreadPoolExecutor中的方法 2.1 构造方法 2.2 schedule方法 2.3 scheduleAtFixedRate方法 2.4 scheduleWithFixedDelay方法 2.5 setConti…

什么是组件,以及前端各种框架组件的使用方法

&#x1f642;博主&#xff1a;小猫娃来啦 &#x1f642;文章核心&#xff1a;介绍什么是组件&#xff0c;以及前端各种框架组件的使用方法 目录 什么是组件&#xff0c;请细看关键点 前端常用框架vue2框架的常用组件库vue3框架的常用组件库react框架的常用组件库微信小程序常用…