dev-jim dev-jim - 11 months ago 63
Javascript Question

Object has been destroyed when open secondary/child window in electron js

In a main window, when a button is clicked, the second/child window will popped up via an ipc call.
This works when open the pop window on the first time. If I closed the pop window and reopen it again, I will get this error:

Uncaught Exception: Error: Object has been destroyed at Error (native)
at EventEmitter. (/home/xxxx/electron/fin/main.js:36:21) at emitOne
(events.js:96:13) at EventEmitter.emit (events.js:188:7) at
at emitTwo (events.js:106:13) at EventEmitter.emit (events.js:191:7)

#main.js on app ready:
mainWindow = new BrowserWindow({width: 800, height: 600})



mainWindow.on('closed', function () {

mainWindow = null

let popWindow = new BrowserWindow({parent: mainWindow, width: 450, height: 450, show: false});

ipc.on('toggle-popwindow', function(){;

And when I add hide() in the 'closed' method:

popWindow.on('closed', function (event) {

I get this:

Uncaught Exception:
Error: Object has been destroyed

What is the problem?

Answer Source

If you close a browser window it will be destroyed, so you can't hide or show it again after that. Since you want to hide it and show it again later your should add a listener for the close event that calls preventDefault() and hides the window instead of closing it.