运用electron技术实现在主进程通过点击一个按钮在渲染进程里创建一个新窗口
时间: 2024-02-25 08:54:33 浏览: 88
QT+VS点击按钮弹出新窗口的实现
5星 · 资源好评率100%
要在 Electron 主进程中实现在渲染进程中创建新窗口的功能,您可以使用`BrowserWindow`模块。
以下是一个示例代码,可以在主进程中创建一个窗口,并在渲染进程中添加一个按钮,通过点击该按钮创建新窗口:
在主进程代码中:
```javascript
const { app, BrowserWindow } = require('electron');
let mainWindow;
function createWindow() {
mainWindow = new BrowserWindow({ width: 800, height: 600 });
mainWindow.loadFile('index.html');
// 当窗口关闭时,将其设置为null以释放内存
mainWindow.on('closed', function () {
mainWindow = null;
});
}
app.on('ready', createWindow);
// 在所有窗口关闭时退出应用程序
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') {
app.quit();
}
});
// 在macOS上,单击Dock图标并且没有其他窗口打开时,重新创建窗口
app.on('activate', function () {
if (mainWindow === null) {
createWindow();
}
});
// 用于创建新窗口的函数
function createNewWindow() {
let newWindow = new BrowserWindow({ width: 600, height: 400 });
newWindow.loadFile('newWindow.html');
}
// 在主进程中向渲染进程传递函数
exports.createNewWindow = createNewWindow;
```
在渲染进程代码中:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>渲染进程</title>
</head>
<body>
<button onclick="createWindow()">创建新窗口</button>
<script>
const { remote } = require('electron');
const { createNewWindow } = remote.require('./main');
function createWindow() {
createNewWindow();
}
</script>
</body>
</html>
```
在以上代码中,我们在主进程中创建了一个函数`createNewWindow()`,用于创建新窗口。我们将该函数导出,以便在渲染进程中使用。在渲染进程中,我们使用`remote.require()`方法获取主进程中的`createNewWindow()`函数,并将其绑定到按钮的`onclick`事件上。
当用户在渲染进程中单击该按钮时,将调用主进程中的`createNewWindow()`函数,从而在渲染进程中创建一个新窗口。
阅读全文