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