我正在用电子编写程序。 这个程序有多个窗口。 现在我想在一个 BrowserWindow 中创建一个 OpenDialog。 我使用 preload、ipcRenderer 和 ipcMain 来设计这个功能。
preload.js
contextBridge.exposeInMainWorld(
"renderer", {
'openDialog': (View) => {
ipcRenderer.invoke('openDialog', {
'properties': ['openFile'],
'filters': [{
'name': 'Text Files',
'extensions': ['txt']
}, {
'name': 'Markdown Files',
'extensions': ['md', 'markdown']
}, {
'name': 'All',
'extensions': ['*']
}]
}).then(...)
}
}
)
main.js
ipcMain.handle('openDialog', (event, args) => {
return dialog.showOpenDialog(event.sender, args)
})
但 event.sender 是 WebContents,而不是 BrowserWindow。 如何获取 BrowserWindow?
我可以通过检查每个 BrowserWindow 的 WebContents 来获取它。但我认为这不是一个好主意。