我们说我有2个流程:
进程1向进程2发送一个有效的html字符串:
ipcRenderer.send('open-window-from-string',
'<!DOCTYPE html>' + '<html>' + htmlElement.innerHTML + '</html>');
进程2(Electron Main-Process)正在尝试从该字符串打开一个新窗口:
ipc.on('open-window-from-string', (event, htmlString) => {
const windowFromString= BrowserWindow.fromWebContents(htmlString);
}
我知道我可以将html保存为实际的html文件。这样一切都在使用时起作用:
loadURL(`file://${__dirname}/windowFromString.html`);
然而,这会导致不必要的读/写操作。
这就是我试图从htmlString中加载一个新窗口的原因。 所以问题再次出现: 是否可以从内存中的html字符串加载电子webContents?
提前感谢您的帮助。
此致 Megajin
答案 0 :(得分:3)
在Chrome中,您可以通过使用数据导航网址来显示内联html网页:协议,例如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/>');
打开一个窗口吗?
答案 1 :(得分:1)
<html>
<head></head>
<body></body>
</html>
打开它之后,您可以使用browserWindow.webContents.evaluate()来加载作为String传递的实际HTML。如果需要,您可以使用webContents.reload()使更改生效。