diff --git a/lib/browser/guest-window-manager.js b/lib/browser/guest-window-manager.js index e5bfa7412386..f6e43c33b8ca 100644 --- a/lib/browser/guest-window-manager.js +++ b/lib/browser/guest-window-manager.js @@ -242,12 +242,16 @@ ipcMain.on('ELECTRON_GUEST_WINDOW_MANAGER_INTERNAL_WINDOW_OPEN', function (event disposition, options, additionalFeatures, postData) { options = mergeBrowserWindowOptions(event.sender, options) - event.sender.emit('new-window', event, url, frameName, disposition, options, additionalFeatures) - const newGuest = event.newGuest - if ((event.sender.isGuest() && !event.sender.allowPopups) || event.defaultPrevented) { + const newWindowEvent = { + preventDefault: () => newWindowEvent.defaultPrevented = true + } + event.sender.emit('new-window', newWindowEvent, url, frameName, disposition, options, additionalFeatures) + const newGuest = newWindowEvent.newGuest + if ((event.sender.isGuest() && !event.sender.allowPopups) || newWindowEvent.defaultPrevented) { if (newGuest !== undefined && newGuest !== null) { event.returnValue = setupGuest(event.sender, frameName, newGuest, options) } else { + event.preventDefault() event.returnValue = null } } else {