gpt4 book ai didi

javascript - Electron 中两个渲染器进程之间的通信

转载 作者:太空狗 更新时间:2023-10-29 16:05:10 24 4
gpt4 key购买 nike

我正在编写一个 Eletron 程序。在程序中有一个由主进程(main.js)创建的索引窗口。在此窗口中有一个文件(图像)列表。当我单击该列表中的一个文件时,我想启动显示该文件的第二个窗口。第二个窗口由索引窗口 (index.js) 的渲染器进程启动。如何在索引窗口的渲染器进程和第二个窗口的渲染器进程之间进行通信?

代码:

从 main.js 中的主进程创建索引窗口:

let win;

function createWindow(){
// Create the browser window.

win = new BrowserWindow({width: 1024, height: 768, minWidth: 800, minHeight: 600, show: false, icon: 'files/images/icon.png'});

win.loadURL(`file://${__dirname}/files/html/index.html`);
win.once('ready-to-show', () => {
win.show()
})

// Emitted when the window is closed.
win.on('closed', () => {
win = null;
});
}
app.on('ready', createWindow);

在 index.html 中启动 index.js(渲染进程):

<script src="../javascript/index.js"></script>

在 index.js 中 function create_sprite_window()被调用创建一个子窗口:

const fs = require('fs');
const path = require('path');
const {BrowserWindow} = require('electron').remote
let child_windows = [];


function create_child_window(URL, width, height){
let rem_win = require('electron').remote.getCurrentWindow();
let new_win = new BrowserWindow({width: width, height: height, minWidth: 400, minHeight: 300, show: false, parent: rem_win, minimizable: true, maximizable: true, skipTaskbar: true});
child_windows[child_windows.length] = new_win;
console.log(child_windows);
new_win.loadURL(URL);
new_win.once('ready-to-show', () => {
new_win.show()
})
return new_win;
}
function create_sprite_window(){
new_win = create_child_window(`file://${__dirname}/../html/sprite_manager.html`, 800, 400);

}

子窗口存放在数组child_windows中.

然后是否可以将图像的路径发送到第二个窗口,或者编辑 <img>来自索引窗口的第二个窗口的标签(将第二个窗口中的 <img> 标签的来源设置为带有 getElementById.src = path; 的图像)?

最佳答案

我自己找到了答案。为了在第二个渲染器窗口中显示正确的图像,我将 GET 参数添加到包含图像路径的 URL。

关于javascript - Electron 中两个渲染器进程之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38732244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com