我有以下代码,它可以工作:
const { app, BrowserWindow, BrowserView } = require('electron');
app.whenReady().then(() => {
const win = new BrowserWindow({ width: 800, height: 600 });
const view = new BrowserView();
view.setBounds({ x: 0, y: 0, width: 800, height: 600 });
win.addBrowserView(view);
setTimeout(() => {
view.webContents.loadURL('https://electronjs.org');
}, 1000);
});
但是,我不想使用setTimeout,所以我这样尝试:
const { app, BrowserWindow, BrowserView } = require('electron');
app.whenReady().then(() => {
const win = new BrowserWindow({ width: 800, height: 600 });
const view = new BrowserView();
view.setBounds({ x: 0, y: 0, width: 800, height: 600 });
win.addBrowserView(view);
win.on('ready-to-show', () => {
view.webContents.loadURL('https://electronjs.org');
});
});
但这并不显示页面。
还有其他活动可以参加吗?
还尝试将win.addBrowserView(view)
放入ready-to-show
事件中。
我在Windows 10上使用Electron版本24.1.2。
我也在以下版本的node上尝试过:
16.19.0、18.13.0、19.5.0
更新
示例代码就这么多了!
如果我在addBrowserView之后setBounds,我不再需要timeout或事件:
const { app, BrowserWindow, BrowserView } = require('electron');
app.whenReady().then(() => {
const win = new BrowserWindow({ width: 800, height: 600 });
const view = new BrowserView();
win.addBrowserView(view);
view.setBounds({ x: 0, y: 0, width: 800, height: 600 });
view.webContents.loadURL('https://electronjs.org');
});
我收回那句话
现在又不工作了。
2条答案
按热度按时间exdqitrt1#
在documentation of BrowserWindow中,他们给予了一些例子。例如:
eyh26e7m2#
好吧。终于想明白了。
如果我从渲染器进程(在DOMContentLoaded事件上)向主进程发送一条消息,然后构建并加载BrowserView,它每次都能工作。