主要使用两个API
1.
win.webContents.setWindowOpenHandler()
2.
具体使用见下面的事例,注意在要主进程中使用,还要在win.webContents.on('did-create-window',()=>{}
app.whenReady()
后使用,因为这是一个窗口webContents
的事件
setWindowOpenHandler
可以理解为在创建新窗口前设置新窗口的属性,其实和手动创建一个BrowserWindow具有相同的内容
'did-create-window'
:就是监听新窗口创建完毕时的事件。如果上一步setWindowOpenHandler
有拦截(action: "deny"
),则无法监听到此事件。返回的两个属性,一个时窗体,一个是窗体的创建属性,利用返回的win
窗体属性,我们就可以像操作其他窗口一样的使用了,比如取消原生菜单等等
app.whenReady().then(() => {
createWindow()
require('./ipcmMain/index.js')
require('./ipcmMain/tray.js')
// 创建窗口时监听 deny:阻止创建 allow:允许创建
win.webContents.setWindowOpenHandler(data => {
return {
action: "allow",
overrideBrowserWindowOptions: {
width: 1176,
height: 644,
// kiosk: true,
autoHideMenuBar: true, //设置新窗口自动隐藏菜单栏
// simpleFullScreen: true, //没有效果
// menuBarVisible: false, //没有效果
webPreferences: {
contextIsolation: false,
nodeIntegration: true
}
}
};
})
// 监听新的窗口创建后
win.webContents.on('did-create-window', (win, {
url,
frameName,
options,
disposition,
additionalFeatures,
referrer,
postData
}) => {
// 这里win参数就是获取的新窗口,可以直接用removeMenu()隐藏菜单了
win.removeMenu()
console.log('url:', url)
console.log('frameName:', win.id)
console.log('options:', options)
console.log('disposition:', disposition)
console.log('additionalFeatures:', additionalFeatures)
console.log('referrer:', referrer)
console.log('postData:', postData)
});
})