有没有可能从内存中的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/>');
?