preload.mjs
import os from 'os'
import { contextBridge, ipcRenderer } from "electron"
//console.log("preload.mjs")
contextBridge.exposeInMainWorld('DRAPI',{
url:"dengruicode.com",
version:os.version(),
/*
sendDataToMain: async data => {
//向主进程发起一个名为 sendDataToMain 的异步调用, 并携带 data 数据
return await ipcRenderer.invoke('sendDataToMain',data)
},
toggleTheme: () => { //切换主题
return ipcRenderer.invoke('toggleTheme')
}
*/
invokeWithData: async (channel, data) => {
return await ipcRenderer.invoke(channel, data) //发送者通过指定的 channel 发送数据
},
invoke: async channel => {
return await ipcRenderer.invoke(channel)
},
})
index.js
//console.log("index.js", "dengruicode.com")
//console.log("index.js", window)
/*
//渲染进程向主进程发送数据并获取返回值
DRAPI.sendDataToMain("dengruicode.com").then(data => {
console.log("data:", data)
}).catch(err => {
console.log("err:", err)
})
//切换主题
document.querySelector('#toggleTheme').addEventListener('click', async () => {
let theme = await DRAPI.toggleTheme()
console.log(theme)
})
*/
DRAPI.invokeWithData("sendDataToMain","dengruicode.com").then(data => {
console.log("data:", data)
}).catch(err => {
console.log("err:", err)
})
document.querySelector('#toggleTheme').addEventListener('click', async () => {
//let theme = await DRAPI.toggleTheme()
let theme = await DRAPI.invoke("toggleTheme")
console.log(theme)
})
8.预加载脚本通用调用方法
-- 未经授权禁止转载 --