1、background.js
在主进程里面添加下面代码
//父窗口
async function createWindow() {
// Create the browser window.
const win = new BrowserWindow({
width: 432,
height: 331,
alwaysOnTop: true,//窗口一直保持在其他窗口前面
modal: true,
frame: false,//关闭默认的最大化、最小化、关闭
skipTaskbar: true, // 窗口是否不显示在任务栏上面
darkTheme: true,//窗口是否随window主题
resizable: false,//用户是否可以调整窗口
center: true, // 窗口居中
icon: path.join(__static, "./static/logo.ico"),
transparent: false,//窗口是否透明
show: false,// 显示窗口将没有视觉闪烁 配合下面ready-to-show事件
hasShadow: true,//窗口是否有阴影
webPreferences: {
devTools: true,//客户端是否可以打开开发者工具 (客户端快捷键:ctrl+shift+i)
nodeIntegration: true,//开启node模块
enableRemoteModule: true, // 使用remote模块 electron12版本之后废除了,需要自己安装
contextIsolation: false,
//解决axios跨域请求 不推荐,不安全,但简单好用
webSecurity: false,
},
})
// 新建窗口路径
const winURL = process.env.NODE_ENV === 'development' ? `http://localhost:8080` : `file://${__dirname}/index.html`
//IPC监听 新建窗口 子窗口
ipcMain.on('openWindow', (event,data)=> {
//调用 BrowserWindow打开新窗口
let win2 = new BrowserWindow({
width: 650,
height: 480,
x:data.x,
y:data.y,
frame: false,
parent: win,//父窗口名
modal: true,//开启模态父子窗口
resizable: false,//用户是否可以自己调整窗口大小
hasShadow: true,//窗口是否有阴影
icon: path.join(__static, "./static/logo.ico"),
webPreferences: {
// devTools: false,//关闭开发者工具
devTools: true,//客户端是否可以打开开发者工具 (客户端快捷键:ctrl+shift+i)
nodeIntegration: true,//开启node模块
enableRemoteModule: true, // 使用remote模块 electron12版本之后废除了,需要自己安装
contextIsolation: false,
//解决axios跨域请求 不推荐,不安全,但简单好用
webSecurity: false,
},
})
//子窗口显示的页面路由 在这里路由是/test
win2.loadURL(winURL + "/#/test");
win2.webContents.openDevTools();
win2.on('closed', () => {
win2 = null;
})
})
2、注意
1、在这里之前遇见了一个坑,关闭子窗口会报错
TypeError: Assignment to constant variable
可能是子窗口用const来定义
const win2 = new BrowserWindow({···})
改成 let
let win2 = new BrowserWindow({···})
2022/9/7
发现新的办法----模态窗口(即子窗口关闭前父窗口不能获取焦点)
把下面这个代码替换1中win2窗口的2个属性,也可以实现模态窗口功能
parent: BrowserWindow.getFocusedWindow(),//父窗口
modal: true,//开启父子窗口