gpt4 book ai didi

javascript - Electron:在 BrowserWindow 和呈现的 URL 之间进行通信(nodeIntegration:false)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:29:54 27 4
gpt4 key购买 nike

我花了大约一个小时阅读一篇博文后的 repo 要点,但似乎无法弄清楚如何做到这一点。

我有一个 BrowserWindow 实例加载一个 URL(我控制),带有 nodeIntegration: false

在主进程中,我想与呈现的 URL 进行通信。我对 preload 脚本、BrowserWindow.sendexecuteJavascript 范式感到困惑。

我要发送的数据非常大(例如,文件上传在 50kb 到 10mb 之间)。

执行此操作的最佳方法是什么?您可能知道的任何示例/教程都会有所帮助。谢谢!

最佳答案

主要.js

const path = require('path')
const electron = require('electron')
const { app, BrowserWindow, ipcMain } = electron

const window = new BrowserWindow({
minWidth: 1200,
minHeight: 700,
autoHideMenuBar: true,
resizable: true,
show: false,
scrollBounce: true,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
}
})
window.webContents.loadURL('https://xxx.xxx.com') // load your web page
ipcMain.on('ping', (event, msg) => {
console.log(msg) // msg from web page
window.webContents.send('pong', 'hi web page') // send to web page
})

预加载.js

const { ipcRenderer } = require('electron');
function init() {
// add global variables to your web page
window.isElectron = true
window.ipcRenderer = ipcRenderer
}

init();

你的网页

<script>
if (window.isElectron) {
window.ipcRenderer.send('ping', 'hello main')
window.ipcRenderer.on('pong', (event, msg) => console.log(msg))
}
</script>

关于javascript - Electron:在 BrowserWindow 和呈现的 URL 之间进行通信(nodeIntegration:false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50102377/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com