电子:如何访问从主进程(toPrint等)渲染过程中呈现的网页内的webview?

时间:2017-06-12 17:35:26

标签: javascript node.js webview electron chromium

我正在尝试获取我在远程托管的网页中提供的 webview 的引用,并将此网页加载到我的电子应用中。

由于我需要 webContents 实例以静默方式打印,我希望webContents引用页面内的 webview

这里的约束是,Print应该是主流程驱动,而不是由网页单独处理。

如何做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以访问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});
});

答案 1 :(得分:0)

现在我正在使用便宜的脏黑客,将webview的id发送到主进程,然后使用webContents.executeJavascript执行以下脚本document.getElementById("'+id+'").print(silent: true)。现在至少要打印的内容是在mainProcess的控制之下。 如果有人有更清洁的方法,请告诉我。 提前谢谢。