diff --git a/lib/worker.js b/lib/worker.js index 7d3e1ad330..0011110538 100644 --- a/lib/worker.js +++ b/lib/worker.js @@ -44,25 +44,28 @@ const operationCountLimit = parseInt(query.operationCountLimit, 10); const averageTracker = new AverageTracker({limit: operationCountLimit}); const childPidsById = new Map(); +const cleanUp = () => { + managerWebContents.removeListener('crashed', destroyRenderer); + managerWebContents.removeListener('destroyed', destroyRenderer); + window.removeEventListener('beforeunload', cleanUp) +}; + const destroyRenderer = () => { if (!managerWebContents.isDestroyed()) { - managerWebContents.removeListener('crashed', destroyRenderer); - managerWebContents.removeListener('destroyed', destroyRenderer); + cleanUp() } const win = remote.BrowserWindow.fromWebContents(remote.getCurrentWebContents()); if (win && !win.isDestroyed()) { win.destroy(); } }; + const managerWebContentsId = parseInt(query.managerWebContentsId, 10); const managerWebContents = remote.webContents.fromId(managerWebContentsId); if (managerWebContents && !managerWebContents.isDestroyed()) { managerWebContents.on('crashed', destroyRenderer); managerWebContents.on('destroyed', destroyRenderer); - window.onbeforeunload = () => { - managerWebContents.removeListener('crashed', destroyRenderer); - managerWebContents.removeListener('destroyed', destroyRenderer); - }; + window.addEventListener('beforeunload', cleanup); } const channelName = query.channelName;