window.open
FunctionOpen a new window and load a URL.
When window.open
is called to create a new window in a web page, a new instance of BrowserWindow
will be created for the url
and a proxy will be returned to window.open
to let the page have limited control over it.
The proxy has limited standard functionality implemented to be compatible with traditional web pages. For full control of the new window you should create a BrowserWindow
directly.
The newly created BrowserWindow
will inherit the parent window’s options by default. To override inherited options you can set them in the features
string.
window.open(url[, frameName][, features])
url
StringframeName
String (optional)features
String (optional)Returns BrowserWindowProxy
- Creates a new window and returns an instance of BrowserWindowProxy
class.
The features
string follows the format of standard browser, but each feature has to be a field of BrowserWindow
’s options.
Notes:
window
if it is disabled on the parent window.window
if it is enabled on the parent window.window
if it is disabled on the parent window.features
will be passed to any registered webContent
’s new-window
event handler in the additionalFeatures
argument.window.opener.postMessage(message, targetOrigin)
message
StringtargetOrigin
StringSends a message to the parent window with the specified origin or *
for no origin preference.
window.open()
implementationIf you want to use Chrome’s built-in window.open()
implementation, set nativeWindowOpen
to true
in the webPreferences
options object.
Native window.open()
allows synchronous access to opened windows so it is convenient choice if you need to open a dialog or a preferences window.
This option can also be set on <webview>
tags as well:
<webview webpreferences="nativeWindowOpen=yes"></webview>
The creation of the BrowserWindow
is customizable via WebContents
’s new-window
event.
// main process
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nativeWindowOpen: true
}
})
mainWindow.webContents.on('new-window', (event, url, frameName, disposition, options, additionalFeatures) => {
if (frameName === 'modal') {
// open window as modal
event.preventDefault()
Object.assign(options, {
modal: true,
parent: mainWindow,
width: 100,
height: 100
})
event.newGuest = new BrowserWindow(options)
}
})
// renderer process (mainWindow)
let modal = window.open('', 'modal')
modal.document.write('<h1>Hello</h1>')