electron 在使用电子邮件的网站上,是否可以在preload.js中加载本地文件?

vlurs2pr  于 2022-12-25  发布在  Electron
关注(0)|答案(1)|浏览(247)

我目前正在尝试做一个简单的电子应用程序,启动一个网站(例如:mainWindow.loadURL('https://www.google.com')),然后应用局部图像作为背景。
我一直在使用在线链接,但我希望能够访问preload.js中的本Map像。如果我使用网站启动窗口,似乎无法以任何方式访问我的文件系统。我尝试做的事情可行吗?

3df52oht

3df52oht1#

您可以使用fs模块和window.postMessage函数

const { ipcMain } = require('electron')

// Listen for a message from the renderer process
ipcMain.on('load-local-image', (event, arg) => {
  // Read the contents of the local file using the fs module
  const fs = require('fs')
  const imageData = fs.readFileSync('/path/to/local/image.jpg')

  // Send the image data back to the renderer process
  event.sender.send('local-image-loaded', imageData)
})

const { ipcRenderer } = require('electron')

// Send a message to the main process to load the local image
ipcRenderer.send('load-local-image')

// Listen for a response
ipcRenderer.on('local-image-loaded', (event, imageData) => {
  // set the background image
  // document.body.style.backgroundImage = `url(${imageData})` with url
  document.body.style.backgroundImage = `${imageData}`
})

在文档中阅读有关preload.js的更多信息:https://www.electronjs.org/docs/api/web-preferences#preload。

相关问题