窗口开启 | window.open
window.open功能
打开一个新窗口并加载一个 URL。
当window.open
被调用来在网页中创建一个新窗口时,BrowserWindow
将为该实例创建一个url
新实例,并且将返回一个代理window.open
以使该页面对其进行有限的控制。
代理具有有限的标准功能,实现与传统网页兼容。要完全控制新窗口,您应该BrowserWindow
直接创建。
新创建的BrowserWindow
将默认继承父窗口的选项。要覆盖继承的选项,你可以在features
字符串中设置它们。
window.open(url[, frameName][, features])
url
串
frameName
字符串(可选)
features
字符串(可选)
返回BrowserWindowProxy
- 创建一个新窗口并返回一个BrowserWindowProxy
类的实例。
features
字符串遵循标准浏览器的格式,但每个功能都必须是一个BrowserWindow
选项字段。
注:
- 如果在父窗口上禁用了节点集成,它将始终在打开
window
时被禁用。
- 如果在父窗口上启用了上下文隔离,则会始终在
window
打开时启用上下文隔离。
- 如果在父窗口禁用 JavaScript,则在打开的
window
中将始终处于禁用状态。
- 非标准特征(不由 Chromium 或 Electron 处理)
features
将在参数中传递给任何注册webContent
的new-window
事件处理程序additionalFeatures
。
window.opener.postMessage(message, targetOrigin)
message
串
targetOrigin
串
将消息发送到具有指定来源的父窗口或*
无源偏好。
使用铬window.open()实施
如果您想使用 Chrome 的内置window.open()
实现,请在webPreferences
选项对象中nativeWindowOpen
设置true
。
原生的 window.open()
允许同步访问打开的窗口,因此如果需要打开对话框或首选项窗口,它是方便的选择。
这个选项也可以在<webview>标签上设置:
<webview webpreferences="nativeWindowOpen=yes"></webview>
的创建BrowserWindow
是通过定制WebContents
的new-window
事件。
// 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>')