contextBridge
json
// contextIsolation 需要设置为true
contextBridge.exposeInMainWorld("versions", {
node: () => process.versions.node,
chrome: () => process.versions.chrome,
electron: () => process.versions.electron,
// 能暴露的不仅仅是函数,我们还可以暴露变量
});request
https://blog.csdn.net/weixin_41568995/article/details/120352394 由于require可以直接请求运行客户机上的文件,容易引起安全问题,而在新的electron中被禁止,所以在contextIsolation为true时认为require不可以启用 如果想要使用require,则不应该使用contextBridge API
json
//修改前
const { contextBridge, ipcRenderer } = require('electron')
const path = require('path')
contextBridge.exposeInMainWorld('electron', {
startDrag: (fileName) => {
ipcRenderer.send('ondragstart', path.join(process.cwd(), fileName))
}
})
//修改后
//preload.js
const { ipcRenderer } = require('electron')
const path = require('path')
function startDrag(fileName) {
ipcRenderer.send('ondragstart', path.join(process.cwd(), fileName))
}
document.getElementById('drag').ondragstart = (event) => {
event.preventDefault()
startDrag('./img/img.jpeg');
}打开文件夹
javascript
const { ipcRenderer } = require('electron')
const openCacheFolder = async () => {
await ipcRenderer.invoke('OPEN_CACHE_FOLDER')
}
//
const { ipcMain, shell } = require('electron')
ipcMain.handle('OPEN_CACHE_FOLDER', () => {
if (cacheFolder) {
shell.openPath(cacheFolder)
}
})
xxxsjan Docs