有没有可能从内存中的HTMLstring加载电子webContents?

假设我有两个进程:

进程1正在向进程2发送一个有效的htmlstring:

ipcRenderer.send('open-window-from-string', '<!DOCTYPE html>' + '<html>' + htmlElement.innerHTML + '</html>'); 

进程2(电子主进程)试图从该string中打开一个新窗口:

 ipc.on('open-window-from-string', (event, htmlString) => { const windowFromString= BrowserWindow.fromWebContents(htmlString); } 

我知道我可以将html保存为一个实际的html文件。 这样一切工作,而使用:

 loadURL(`file://${__dirname}/windowFromString.html`); 

但是这会导致不必要的读/写操作。

这就是为什么我试图加载一个从我的记忆中的htmlString的新窗口。 所以问题是: 是否有可能从内存中的HTMLstring加载电子webContents?

在此先感谢您的帮助。

问候,Megajin

那么,也许你不能直接加载整个HTML。 作为一种解决方法,您可以打开一个新的浏览器窗口,其内容如下:

 <html> <head></head> <body></body> </html> 

打开这个之后,可以使用browserWindow.webContents.evaluate()来加载以stringforms传递的实际HTML。 如果需要,您可以使用webContents.reload()使更改生效。

在Chrome中,您可以通过导航带有data:URL的协议,如data:text/html;charset=utf-8,<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>MyYTitle</title> <style type="text/css"> </style></head> <body>Hello world from Lyon, FR</body>

也许它在Electron中是一样的。 你可以尝试用loadURL('data:text/html;charset=utf-8,<YOUR HTML/>');打开一个窗口loadURL('data:text/html;charset=utf-8,<YOUR HTML/>');