dialog
显示用于打开和保存文件、发出警报等的原生系统对话框。
进程:主进程
显示一个对话框以选择多个文件的示例
const { dialog } = require('electron')
console.log(dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] }))
方法
dialog
模块具有以下方法
dialog.showOpenDialogSync([browserWindow, ]options)
browserWindow
BrowserWindow(可选)
返回 string[] | undefined
,即用户选择的文件路径;如果取消对话框,则返回 undefined
。
browserWindow
参数允许对话框附加到父窗口,使其成为模式窗口。
filters
指定一个文件类型数组,当你想将用户限制为特定类型时,可以显示或选择这些类型。例如
{
filters: [
{ name: 'Images', extensions: ['jpg', 'png', 'gif'] },
{ name: 'Movies', extensions: ['mkv', 'avi', 'mp4'] },
{ name: 'Custom File Type', extensions: ['as'] },
{ name: 'All Files', extensions: ['*'] }
]
}
extensions
数组应包含没有通配符或点的扩展名(例如 'png'
是好的,但 '.png'
和 '*.png'
是不好的)。要显示所有文件,请使用通配符 '*'
(不支持其他通配符)。
注意:在 Windows 和 Linux 上,打开对话框不能同时是文件选择器和目录选择器,因此如果你在这些平台上将 properties
设置为 ['openFile', 'openDirectory']
,则会显示一个目录选择器。
dialog.showOpenDialogSync(mainWindow, {
properties: ['openFile', 'openDirectory']
})
dialog.showOpenDialog([browserWindow, ]options)
browserWindow
BrowserWindow(可选)
返回 Promise<Object>
- 使用包含以下内容的对象进行解析
canceled
布尔值 - 对话框是否被取消。filePaths
字符串数组 - 用户选择的文件路径数组。如果对话框被取消,这将是一个空数组。bookmarks
字符串数组(可选)macOS MAS - 与filePaths
数组匹配的 base64 编码字符串数组,其中包含安全范围的书签数据。必须启用securityScopedBookmarks
才能填充此数据。(有关返回值,请参见此处表格。)
browserWindow
参数允许对话框附加到父窗口,使其成为模式窗口。
filters
指定一个文件类型数组,当你想将用户限制为特定类型时,可以显示或选择这些类型。例如
{
filters: [
{ name: 'Images', extensions: ['jpg', 'png', 'gif'] },
{ name: 'Movies', extensions: ['mkv', 'avi', 'mp4'] },
{ name: 'Custom File Type', extensions: ['as'] },
{ name: 'All Files', extensions: ['*'] }
]
}
extensions
数组应包含没有通配符或点的扩展名(例如 'png'
是好的,但 '.png'
和 '*.png'
是不好的)。要显示所有文件,请使用通配符 '*'
(不支持其他通配符)。
注意:在 Windows 和 Linux 上,打开对话框不能同时是文件选择器和目录选择器,因此如果你在这些平台上将 properties
设置为 ['openFile', 'openDirectory']
,则会显示一个目录选择器。
dialog.showOpenDialog(mainWindow, {
properties: ['openFile', 'openDirectory']
}).then(result => {
console.log(result.canceled)
console.log(result.filePaths)
}).catch(err => {
console.log(err)
})
dialog.showSaveDialogSync([browserWindow, ]options)
browserWindow
BrowserWindow(可选)
返回 string | undefined
,即用户选择的文件路径;如果取消对话框,则返回 undefined
。
browserWindow
参数允许对话框附加到父窗口,使其成为模式窗口。
filters
指定可以显示的文件类型数组,请参阅 dialog.showOpenDialog
以获取示例。
dialog.showSaveDialog([browserWindow, ]options)
browserWindow
BrowserWindow(可选)
返回 Promise<Object>
- 使用包含以下内容的对象进行解析
canceled
布尔值 - 对话框是否被取消。filePath
字符串(可选) - 如果取消对话框,这将是undefined
。bookmark
字符串(可选)macOS MAS - 包含已保存文件安全范围书签数据的 Base64 编码字符串。必须启用securityScopedBookmarks
才能显示此项。(有关返回值,请参阅 此处表格。)
browserWindow
参数允许对话框附加到父窗口,使其成为模式窗口。
filters
指定可以显示的文件类型数组,请参阅 dialog.showOpenDialog
以获取示例。
注意:在 macOS 上,建议使用异步版本以避免在展开和折叠对话框时出现问题。
dialog.showMessageBoxSync([browserWindow, ]options)
browserWindow
BrowserWindow(可选)
返回 Integer
- 单击按钮的索引。
显示一个消息框,它将阻塞进程,直到消息框关闭。它返回单击按钮的索引。
browserWindow
参数允许对话框附加到父窗口,使其成为模态窗口。如果未显示 browserWindow
,则对话框不会附加到它。在这种情况下,它将显示为一个独立窗口。
dialog.showMessageBox([browserWindow, ]options)
browserWindow
BrowserWindow(可选)
返回 Promise<Object>
- 使用包含以下属性的 Promise 解析
response
数字 - 单击按钮的索引。checkboxChecked
布尔值 - 如果设置了checkboxLabel
,则为复选框的选中状态。否则为false
。
显示一个消息框。
browserWindow
参数允许对话框附加到父窗口,使其成为模式窗口。
dialog.showErrorBox(title, content)
title
字符串 - 在错误框中显示的标题。content
字符串 - 在错误框中显示的文本内容。
显示一个模态对话框,显示一条错误消息。
在 app
模块发出 ready
事件之前,可以安全地调用此 API,通常用于报告启动早期阶段的错误。如果在 Linux 上的应用程序 ready
事件之前调用,则会将消息发送到 stderr,并且不会出现 GUI 对话框。
dialog.showCertificateTrustDialog([browserWindow, ]options)
macOS Windows
browserWindow
BrowserWindow(可选)
返回 Promise<void>
- 当显示证书信任对话框时解决。
在 macOS 上,这会显示一个模态对话框,其中显示一条消息和证书信息,并为用户提供信任/导入证书的选项。如果您提供 browserWindow
参数,则该对话框将附加到父窗口,使其成为模态。
在 Windows 上,由于使用了 Win32 API,因此选项受到更多限制
message
参数未使用,因为操作系统提供了自己的确认对话框。browserWindow
参数被忽略,因为无法使此确认对话框成为模态。
书签数组
showOpenDialog
、showOpenDialogSync
、showSaveDialog
和 showSaveDialogSync
将返回一个 bookmarks
数组。
构建类型 | securityScopedBookmarks 布尔值 | 返回类型 | 返回值 |
---|---|---|---|
macOS mas | True | 成功 | ['LONGBOOKMARKSTRING'] |
macOS mas | True | 错误 | [''] (空字符串数组) |
macOS mas | False | 不适用 | [] (空数组) |
非 mas | 任何 | 不适用 | [] (空数组) |
工作表
在 macOS 上,如果您在 browserWindow
参数中提供 BrowserWindow
引用,则对话框将显示为附加到窗口的工作表,如果没有提供窗口,则显示为模态。
您可以调用 BrowserWindow.getCurrentWindow().setSheetOffset(offset)
来更改工作表附加到的窗口框架的偏移量。