2.6 KiB
window.open
Function
Open 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:
- Node integration will always be disabled in the opened
window
if it is disabled on the parent window. - Non-standard features (that are not handled by Chromium or Electron) given in
features
will be passed to any registeredwebContent
'snew-window
event handler in theadditionalFeatures
argument.
window.opener.postMessage(message, targetOrigin)
message
StringtargetOrigin
String
Sends a message to the parent window with the specified origin or *
for no
origin preference.
Use Native window.open()
If you want to use native window.open()
implementation, pass useNativeWindowOpen: true
in webPreferences
option.
Native window.open()
allows synchronous access to opened windows so it is convenient choise if you need to open a dialog or a preferences window.
The creation of the BrowserWindow
is customizable in 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
})
modal = new BrowserWindow(options)
event.newGuest = modal
}
})
// renderer process (mainWindow)
let modal = window.open('', 'modal')
modal.document.write('<h1>Hello</h1>')