当窗口不可见时如何使 capturePage 工作?

pup*_*eno 1 electron

我正在尝试在 Electron 的窗口上使用 capturePage,当该窗口不可见时,因为它完全被其他窗口遮挡,它会转储一个空的 PNG。

我在创建窗口时尝试单独传递这些选项,但它们没有区别:

 useContentSize: true,
 enableLargerThanScreen: true
 webPreferences: {
   offscreen: true
   webgl: false
 }
Run Code Online (Sandbox Code Playgroud)

任何想法如何使它工作?

per*_*rgy 7

以下代码也适用于隐藏的、屏幕外的和可见的浏览器窗口,即使它们被其他窗口覆盖

const {app, BrowserWindow} = require('electron')
const fs = require('fs')

app.on('ready', () => {
  let win = new BrowserWindow({
    show: false // or true
  })
  win.webContents.on('did-stop-loading', () => {
    win.capturePage((image) => {
      fs.writeFile('test.png', image.toPNG(), (err) => {
        if (err) throw err
        console.log('It\'s saved!')
        app.quit()
      })
    })
  })
  win.loadURL('http://github.com')
})
Run Code Online (Sandbox Code Playgroud)

如果您收到带有此代码的空 PNG,则表示浏览器窗口尚未准备好进行捕获。你的情况也可能是这样!


capturePage 有时在较旧的电子版本中创建的图像中似乎缺少一些 webview 部分(在 1.8.4 中体验过)