【发布时间】:2017-03-31 03:51:54
【问题描述】:
在Electrondocumentation for the webview tag中,给出了下面的例子来展示渲染器进程如何与webview中托管的网页进行通信:
通过 sendToHost 方法和 ipc-message 事件,您可以轻松地在访客页面和嵌入页面之间进行通信:
// In embedder page. const webview = document.getElementById('foo') webview.addEventListener('ipc-message', (event) => { console.log(event.channel) // Prints "pong" }) webview.send('ping') // In guest page. const {ipcRenderer} = require('electron') ipcRenderer.on('ping', () => { ipcRenderer.sendToHost('pong') })
但是,在我的访客网页中(在 web 视图内),当我尝试 require('electron') 时,我得到了 Uncaught ReferenceError: require is not defined,如文档中所示。
我还需要做些什么才能从访客网页中获取 ipcRenderer 模块吗?
电子版: 1.4.6
注意:我不确定这是否重要,但在我的 web 视图中运行的页面是从本地服务器提供的。在渲染器进程的*页面中,我执行以下操作:document.getElementById("webview").src = "http://localhost:1234/...";。
编辑:看起来从本地服务器提供我的网页并没有改变任何东西。尝试使用静态 HTML 文件后,我遇到了同样的错误。看起来文档中的示例根本不起作用,或者我理解错误。
// Simple foo.html somewhere on my computer
<script>
const {ipcRenderer} = require('electron')
ipcRenderer.on('ping', () => {
ipcRenderer.sendToHost('pong')
})
</script>
// In embedder page, in renderer process
document.getElementById("webview").src = "file://path/to/foo.html";
嵌入页面的输出(在 webview 内):
Uncaught ReferenceError: require is not defined
【问题讨论】: