【发布时间】:2017-11-14 06:54:48
【问题描述】:
我正在尝试获取我在远程托管的网页中提供的 webview 的引用,并将此网页加载到我的电子应用程序中。
由于我需要 webContents 实例静默打印,我想要引用页面内 webview 的 webContents。
这里的限制是,打印应该是主进程驱动的,而不是由网页自己处理的。
如何做到这一点?
【问题讨论】:
标签: javascript node.js webview electron chromium
我正在尝试获取我在远程托管的网页中提供的 webview 的引用,并将此网页加载到我的电子应用程序中。
由于我需要 webContents 实例静默打印,我想要引用页面内 webview 的 webContents。
这里的限制是,打印应该是主进程驱动的,而不是由网页自己处理的。
如何做到这一点?
【问题讨论】:
标签: javascript node.js webview electron chromium
现在我正在使用廉价的脏黑客,将 webview 的 id 发送到主进程,然后使用 webContents.executeJavascript 执行以下脚本 document.getElementById("'+id+'").print(silent: true) 。现在至少要打印的内容在 mainProcess 的控制之下。
如果有人有更清洁的方法来做到这一点,请告诉我。
提前致谢。
【讨论】:
您可以访问 webview 并从渲染器进程打印其内容。 首先将 webview 存储在一个变量中:
const webview = document.getElementById('webview');
那么你可以这样做:
webview.print({silent: true});
在文档中:https://electron.atom.io/docs/api/webview-tag/#webviewprintoptions
修改
如果您想从主进程访问 webContents,您可以:
webview.getWebContents().send('print');
在主进程中:
ipcMain.on('print', (event) => {
event.sender.webContents.print({silent: true});
});
【讨论】: