dialog
显示用于打开和保存文件、警告等的原生系统对话框。
进程: 主
显示对话框以选择多个文件的示例
const { dialog } = require('electron')
console.log(dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] }))
方法
dialog
模块有以下方法
dialog.showOpenDialogSync([window, ]options)
window
BaseWindow (可选)
返回 string[] | undefined
,用户选择的文件路径;如果对话框被取消,则返回 undefined
。
window
参数允许对话框附加到父窗口,使其成为模态窗口。
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']
})
注意: 在 Linux 上,使用 portal 文件选择器对话框时,除非 portal 后端版本为 4 或更高,否则不支持 defaultPath
。您可以使用 --xdg-portal-required-version
命令行开关强制使用 gtk 或 kde 对话框。
dialog.showOpenDialog([window, ]options)
window
BaseWindow (可选)
返回 Promise<Object>
- 解析为一个包含以下属性的对象
canceled
boolean - 对话框是否被取消。filePaths
string[] - 用户选择的文件路径数组。如果对话框被取消,这将是一个空数组。bookmarks
string[] (可选) macOS MAS - 一个与filePaths
数组对应的 base64 编码字符串数组,包含安全范围内的书签数据。必须启用securityScopedBookmarks
才能填充此字段。(有关返回值,请参阅此处表格)。
window
参数允许对话框附加到父窗口,使其成为模态窗口。
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)
})
注意: 在 Linux 上,使用 portal 文件选择器对话框时,除非 portal 后端版本为 4 或更高,否则不支持 defaultPath
。您可以使用 --xdg-portal-required-version
命令行开关强制使用 gtk 或 kde 对话框。
dialog.showSaveDialogSync([window, ]options)
window
BaseWindow (可选)
返回 string
,用户选择的文件路径;如果对话框被取消,则返回一个空字符串。
window
参数允许对话框附加到父窗口,使其成为模态窗口。
filters
指定一个可以显示的文件类型数组,参见 dialog.showOpenDialog
获取示例。
dialog.showSaveDialog([window, ]options)
window
BaseWindow (可选)
返回 Promise<Object>
- 解析为一个包含以下属性的对象
canceled
boolean - 对话框是否被取消。filePath
string - 如果对话框被取消,这将是一个空字符串。bookmark
string (可选) macOS MAS - 包含已保存文件的安全范围内的书签数据的 base64 编码字符串。必须启用securityScopedBookmarks
才能存在此字段。(有关返回值,请参阅此处表格)。
window
参数允许对话框附加到父窗口,使其成为模态窗口。
filters
指定一个可以显示的文件类型数组,参见 dialog.showOpenDialog
获取示例。
注意: 在 macOS 上,建议使用异步版本,以避免对话框展开和折叠时出现问题。
dialog.showMessageBoxSync([window, ]options)
window
BaseWindow (可选)
返回 Integer
- 被点击按钮的索引。
显示一个消息框,它会阻塞进程直到消息框关闭。它返回被点击按钮的索引。
window
参数允许对话框附加到父窗口,使其成为模态窗口。如果 window
没有显示,对话框将不会附加到它。在这种情况下,它将作为一个独立的窗口显示。
dialog.showMessageBox([window, ]options)
window
BaseWindow (可选)
返回 Promise<Object>
- 解析为一个包含以下属性的 Promise
response
number - 被点击按钮的索引。checkboxChecked
boolean - 如果设置了checkboxLabel
,则表示复选框的选中状态。否则为false
。
显示一个消息框。
window
参数允许对话框附加到父窗口,使其成为模态窗口。
dialog.showErrorBox(title, content)
title
string - 在错误框中显示的标题。content
string - 在错误框中显示的文本内容。
显示一个模态对话框,其中包含错误消息。
此 API 可以安全地在 app
模块发出 ready
事件之前调用,它通常用于报告启动初期的错误。如果在 Linux 上在 app ready
事件之前调用,消息将输出到 stderr,不会出现 GUI 对话框。
dialog.showCertificateTrustDialog([window, ]options)
macOS Windows
window
BaseWindow (可选)
返回 Promise<void>
- 在显示证书信任对话框时解析。
在 macOS 上,这将显示一个模态对话框,显示消息和证书信息,并提供用户信任/导入证书的选项。如果您提供 window
参数,对话框将附加到父窗口,使其成为模态窗口。
在 Windows 上,由于使用了 Win32 API,选项更有限
message
参数未使用,因为操作系统提供了自己的确认对话框。window
参数被忽略,因为无法使此确认对话框成为模态。
书签数组
showOpenDialog
和 showSaveDialog
解析为一个包含 bookmarks
字段的对象。此字段是一个 Base64 编码字符串数组,包含已保存文件的安全范围内的书签数据。必须启用 securityScopedBookmarks
选项才能存在此字段。
构建类型 | securityScopedBookmarks boolean | 返回类型 | 返回值 |
---|---|---|---|
macOS mas | True | 成功 | ['LONGBOOKMARKSTRING'] |
macOS mas | True | 错误 | [''] (空字符串数组) |
macOS mas | False | 不适用 | [] (空数组) |
非 mas | 任意 | 不适用 | [] (空数组) |
Sheets
在 macOS 上,如果您在 window
参数中提供 BaseWindow
引用,对话框将作为附加到窗口的表单 (sheet) 显示,如果未提供窗口,则显示为模态对话框。
您可以调用 BaseWindow.getCurrentWindow().setSheetOffset(offset)
来更改表单 (sheets) 附加到窗口框架的偏移量。