网站首页 > 基础教程 正文
场景:
最近开始学习electron,学到dialog后,一直卡着,无法实现API文档中的弹窗方法。经过半天百度和翻阅材料,终于找到解决方法。
问题描述
官网的dialog例子是这样的:
const { dialog } = require('electron')
console.log(dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] }))
如果你按照以上例子复制到渲染进程,100%会失败。该例子只能在主进程中使用。还是怪我自己,没有好好看文档。dialog文档第一句就写明了进程:主进程。而且渲染进程api文档没有记录写法,导致新手容易迷失>.<
原因分析:
其实关于该问题,我感觉最核心问题是官网文档没有较为友好的引导。
而且网上的解决方案普遍偏旧,我使用electron的版本是v18.2.3
解决方案:
好了,言归正传,怎样才能在渲染进程中使用dialog呢?
- 老文档方法,引用改为
const { dialog } = require('electron').remote
console.log(dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] }))
以上方法也是不行的。经过翻阅Electron文档,里面有一栏目References->重点更改,这里明确表明了在Electron 14中已经废弃了remote了,需要使用
//渲染进程
const { dialog } = require('@electron/remote')
//主进程引入
require('@electron/remote/main').initialize()
如果使用@electron/remote需要使用npm按照
npm install --save @electron/remote
经过以上方法,应该可以解决大部分人的问题了。很不幸,我就是大部分人之外。。。于是我接着翻阅各种资料,再在主程序配置了以下两个地方即可
- main.js
function createWindow() {
const mainWindow = new BrowserWindow({
width: 600,
height: 400,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
nodeIntegration: true,
contextIsolation: false,
enableRemoteModule: true,//增加该配置,默认是false,新版本不能使用remote
}
})
mainWindow.loadFile('index.html')
//增加该配置
require('@electron/remote/main').enable(mainWindow.webContents)
}
经过以上配置~应该可以顺利跑通dialog例子
猜你喜欢
- 2024-10-29 将vue代码改写成react vue文件如何编译成html
- 2024-10-29 CKEditor 4.14:支持复制粘贴 LibreOffice 文档的富文本编辑器
- 2024-10-29 Vuejs通过浏览器导航关闭模态框,实现增强的用户体验
- 2024-10-29 jQuery UI 小部件(Widget)方法调用
- 2024-10-29 HTML5新增元素介绍及运用 html5新增的功能元素
- 2024-10-29 HTML 打印问题汇总 html怎么打印
- 2024-10-29 HTML 语法的变化,HTML5有哪些新的元素和属性
- 2024-10-29 Element Plus 的 Dialog 组件实现点击遮罩层不关闭对话框
- 2024-10-29 WebView与JavaScript的交互 webview与js交互原理
- 2024-10-29 1-html基本知识 html的基本内容
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)