尝试在electron中获取BrowserView以显示页面内容

r6hnlfcb  于 2023-04-27  发布在  Electron
关注(0)|答案(2)|浏览(454)

我有以下代码,它可以工作:

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');
});

我收回那句话

现在又不工作了。

exdqitrt

exdqitrt1#

documentation of BrowserWindow中,他们给予了一些例子。例如:

// In the main process.
const { BrowserWindow } = require('electron')

const win = new BrowserWindow({ width: 800, height: 600 })

// Load a remote URL
win.loadURL('https://github.com')
eyh26e7m

eyh26e7m2#

好吧。终于想明白了。
如果我从渲染器进程(在DOMContentLoaded事件上)向主进程发送一条消息,然后构建并加载BrowserView,它每次都能工作。

const { app, BrowserWindow, BrowserView, ipcMain } = require('electron');

app.whenReady().then(() => {
  ipcMain.on('readyToGo', doTheView);
});

function doTheView() {
    const view = new BrowserView();
    view.setBounds({ x: 0, y: 0, width: 800, height: 600 });
    win.addBrowserView(view);
    view.webContents.loadURL('https://electronjs.org');
}

相关问题