diff --git a/docs/breaking-changes.md b/docs/breaking-changes.md index a5e841c928abe..f9445dcdcb934 100644 --- a/docs/breaking-changes.md +++ b/docs/breaking-changes.md @@ -45,6 +45,16 @@ However, you should consider further restricting the information returned to the renderer; for instance, displaying a source selector to the user and only returning the selected source. +### Deprecated: `nativeWindowOpen` + +Prior to Electron 15, `window.open` was by default shimmed to use +`BrowserWindowProxy`. This meant that `window.open('about:blank')` did not work +to open synchronously scriptable child windows, among other incompatibilities. +Since Electron 15, `nativeWindowOpen` has been enabled by default. + +See the documentation for [window.open in Electron](api/window-open.md) +for more details. + ## Planned Breaking API Changes (16.0) ### Behavior Changed: `crashReporter` implementation switched to Crashpad on Linux diff --git a/lib/browser/api/web-contents.ts b/lib/browser/api/web-contents.ts index 6c82d9c431efd..20acc8c9c0ac8 100644 --- a/lib/browser/api/web-contents.ts +++ b/lib/browser/api/web-contents.ts @@ -1,4 +1,4 @@ -import { app, ipcMain, session, webFrameMain } from 'electron/main'; +import { app, ipcMain, session, deprecate, webFrameMain } from 'electron/main'; import type { BrowserWindowConstructorOptions, LoadURLOptions } from 'electron/main'; import * as url from 'url'; @@ -734,6 +734,11 @@ WebContents.prototype._init = function () { } }); }); + + const prefs = this.getLastWebPreferences() || {}; + if (prefs.nativeWindowOpen === false) { + deprecate.log('Deprecation Warning: Disabling nativeWindowOpen is deprecated. The nativeWindowOpen option will be removed in Electron 18.'); + } } this.on('login', (event, ...args) => {