跳到主要內容

dialog

顯示用於開啟和儲存檔案、警示等的原生系統對話框。

進程:主要

顯示用於選擇多個檔案的對話框範例

const { dialog } = require('electron')
console.log(dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] }))

方法

dialog 模組具有以下方法

dialog.showOpenDialogSync([window, ]options)

  • window BaseWindow (選用)
  • options 物件
    • title 字串 (選用)
    • defaultPath 字串 (選用)
    • buttonLabel 字串 (選用) - 確認按鈕的自訂標籤,如果留空,將使用預設標籤。
    • filters FileFilter[] (選用)
    • properties 字串[] (選用) - 包含對話框應使用的功能。支援以下值
      • openFile - 允許選取檔案。
      • openDirectory - 允許選取目錄。
      • multiSelections - 允許選取多個路徑。
      • showHiddenFiles - 在對話框中顯示隱藏檔案。
      • createDirectory macOS - 允許從對話框建立新目錄。
      • promptToCreate Windows - 如果在對話框中輸入的檔案路徑不存在,則提示建立。這實際上不會在路徑上建立檔案,但允許傳回應該由應用程式建立的不存在的路徑。
      • noResolveAliases macOS - 停用自動別名 (符號連結) 路徑解析。選取的別名現在將傳回別名路徑而不是其目標路徑。
      • treatPackageAsDirectory macOS - 將套件 (例如 .app 資料夾) 視為目錄而非檔案。
      • dontAddToRecent Windows - 不要將正在開啟的項目新增到最近的文件清單中。
    • message 字串 (選用) macOS - 顯示在輸入框上方的訊息。
    • securityScopedBookmarks 布林值 (選用) macOS MAS - 在為 Mac App Store 打包時建立安全範圍的書籤

傳回 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)

  • window BaseWindow (選用)
  • options 物件
    • title 字串 (選用)
    • defaultPath 字串 (選用)
    • buttonLabel 字串 (選用) - 確認按鈕的自訂標籤,如果留空,將使用預設標籤。
    • filters FileFilter[] (選用)
    • properties 字串[] (選用) - 包含對話框應使用的功能。支援以下值
      • openFile - 允許選取檔案。
      • openDirectory - 允許選取目錄。
      • multiSelections - 允許選取多個路徑。
      • showHiddenFiles - 在對話框中顯示隱藏檔案。
      • createDirectory macOS - 允許從對話框建立新目錄。
      • promptToCreate Windows - 如果在對話框中輸入的檔案路徑不存在,則提示建立。這實際上不會在路徑上建立檔案,但允許傳回應該由應用程式建立的不存在的路徑。
      • noResolveAliases macOS - 停用自動別名 (符號連結) 路徑解析。選取的別名現在將傳回別名路徑而不是其目標路徑。
      • treatPackageAsDirectory macOS - 將套件 (例如 .app 資料夾) 視為目錄而非檔案。
      • dontAddToRecent Windows - 不要將正在開啟的項目新增到最近的文件清單中。
    • message 字串 (選用) macOS - 顯示在輸入框上方的訊息。
    • securityScopedBookmarks 布林值 (選用) macOS MAS - 在為 Mac App Store 打包時建立安全範圍的書籤

傳回 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)

  • window BaseWindow (選用)
  • options 物件
    • title 字串 (選用) - 對話框標題。無法在某些 Linux 桌面環境中顯示。
    • defaultPath 字串 (選用) - 要預設使用的絕對目錄路徑、絕對檔案路徑或檔案名稱。
    • buttonLabel 字串 (選用) - 確認按鈕的自訂標籤,如果留空,將使用預設標籤。
    • filters FileFilter[] (選用)
    • message 字串 (選用) macOS - 顯示在文字欄位上方的訊息。
    • nameFieldLabel 字串 (選用) macOS - 顯示在檔案名稱文字欄位前面的文字的自訂標籤。
    • showsTagField 布林值 (選用) macOS - 顯示標籤輸入框,預設為 true
    • properties 字串[] (選用)
      • showHiddenFiles - 在對話框中顯示隱藏檔案。
      • createDirectory macOS - 允許從對話框建立新目錄。
      • treatPackageAsDirectory macOS - 將套件 (例如 .app 資料夾) 視為目錄而非檔案。
      • showOverwriteConfirmation Linux - 設定如果使用者輸入的檔案名稱已存在,是否會向使用者顯示確認對話框。
      • dontAddToRecent Windows - 不要將正在儲存的項目新增到最近的文件清單中。
    • securityScopedBookmarks 布林值 (選用) macOS MAS - 為 Mac App Store 打包時建立安全範圍的書籤。如果啟用此選項且檔案尚不存在,則會在選擇的路徑建立空白檔案。

傳回 string,使用者選擇的檔案路徑;如果取消對話框,則傳回空字串。

window 引數允許對話框附加到父視窗,使其成為強制回應視窗。

filters 指定可顯示的檔案類型陣列,如需範例,請參閱 dialog.showOpenDialog

dialog.showSaveDialog([window, ]options)

  • window BaseWindow (選用)
  • options 物件
    • title 字串 (選用) - 對話框標題。無法在某些 Linux 桌面環境中顯示。
    • defaultPath 字串 (選用) - 要預設使用的絕對目錄路徑、絕對檔案路徑或檔案名稱。
    • buttonLabel 字串 (選用) - 確認按鈕的自訂標籤,如果留空,將使用預設標籤。
    • filters FileFilter[] (選用)
    • message 字串 (選用) macOS - 顯示在文字欄位上方的訊息。
    • nameFieldLabel 字串 (選用) macOS - 顯示在檔案名稱文字欄位前面的文字的自訂標籤。
    • showsTagField 布林值 (選用) macOS - 顯示標籤輸入框,預設為 true
    • properties 字串[] (選用)
      • showHiddenFiles - 在對話框中顯示隱藏檔案。
      • createDirectory macOS - 允許從對話框建立新目錄。
      • treatPackageAsDirectory macOS - 將套件 (例如 .app 資料夾) 視為目錄而非檔案。
      • showOverwriteConfirmation Linux - 設定如果使用者輸入的檔案名稱已存在,是否會向使用者顯示確認對話框。
      • dontAddToRecent Windows - 不要將正在儲存的項目新增到最近的文件清單中。
    • securityScopedBookmarks 布林值 (選用) macOS MAS - 為 Mac App Store 打包時建立安全範圍的書籤。如果啟用此選項且檔案尚不存在,則會在選擇的路徑建立空白檔案。

傳回 Promise<Object> - 使用包含以下內容的物件解析

  • canceled 布林值 - 是否取消對話框。
  • filePath 字串 - 如果取消對話框,則此值將為空字串。
  • bookmark 字串 (選用) macOS MAS - Base64 編碼的字串,其中包含儲存檔案的安全範圍書籤資料。必須啟用 securityScopedBookmarks 才能顯示此值。(如需傳回值,請參閱此處的表格。)

window 引數允許對話框附加到父視窗,使其成為強制回應視窗。

filters 指定可顯示的檔案類型陣列,如需範例,請參閱 dialog.showOpenDialog

注意:在 macOS 上,建議使用非同步版本,以避免展開和摺疊對話框時發生問題。

dialog.showMessageBoxSync([wndow, ]options)

  • window BaseWindow (選用)
  • options 物件
    • message 字串 - 訊息框的內容。
    • type 字串 (選用) - 可以是 noneinfoerrorquestionwarning。在 Windows 上,question 顯示與 info 相同的圖示,除非您使用 icon 選項設定圖示。在 macOS 上,warningerror 都顯示相同的警告圖示。
    • buttons string[] (選填) - 按鈕文字的陣列。在 Windows 上,如果陣列為空,則會產生一個標示為「確定」的按鈕。
    • defaultId 整數 (選填) - 按鈕陣列中,訊息框開啟時預設選取的按鈕索引。
    • title string (選填) - 訊息框的標題,某些平台可能不會顯示。
    • detail string (選填) - 訊息的額外資訊。
    • icon (NativeImage | string) (選填)
    • textWidth 整數 (選填) macOS - 訊息框中文字的自訂寬度。
    • cancelId 整數 (選填) - 要用於透過 Esc 鍵取消對話框的按鈕索引。預設情況下,這會被指定給標籤為「cancel」或「no」的第一個按鈕。如果沒有此類標籤的按鈕且未設定此選項,則會使用 0 作為傳回值。
    • noLink boolean (選填) - 在 Windows 上,Electron 會嘗試找出 buttons 中哪些是常見的按鈕(例如「取消」或「是」),並將其他按鈕顯示為對話框中的命令連結。這可以使對話框以現代 Windows 應用程式的風格顯示。如果您不喜歡這種行為,可以將 noLink 設定為 true
    • normalizeAccessKeys boolean (選填) - 正規化跨平台的鍵盤快速鍵。預設值為 false。啟用此選項會假設按鈕標籤中使用 & 來放置鍵盤快捷鍵,並且標籤會被轉換,以便它們在每個平台上正確運作,& 字元在 macOS 上會被移除,在 Linux 上會轉換為 _,而在 Windows 上則保持不變。例如,標籤為 Vie&w 的按鈕在 Linux 上會轉換為 Vie_w,在 macOS 上會轉換為 View,並且可以在 Windows 和 Linux 上透過 Alt-W 選取。

傳回 Integer - 被點擊按鈕的索引。

顯示一個訊息框,它會阻塞進程直到訊息框被關閉。它會傳回被點擊按鈕的索引。

window 參數允許對話框附加到父視窗,使其成為強制回應視窗。如果 window 沒有顯示,對話框將不會附加到它。在這種情況下,它將會顯示為獨立的視窗。

dialog.showMessageBox([window, ]options)

  • window BaseWindow (選用)
  • options 物件
    • message 字串 - 訊息框的內容。
    • type 字串 (選用) - 可以是 noneinfoerrorquestionwarning。在 Windows 上,question 顯示與 info 相同的圖示,除非您使用 icon 選項設定圖示。在 macOS 上,warningerror 都顯示相同的警告圖示。
    • buttons string[] (選填) - 按鈕文字的陣列。在 Windows 上,如果陣列為空,則會產生一個標示為「確定」的按鈕。
    • defaultId 整數 (選填) - 按鈕陣列中,訊息框開啟時預設選取的按鈕索引。
    • signal AbortSignal (選填) - 傳遞 AbortSignal 的實例,以選擇性地關閉訊息框,訊息框的行為將如同使用者取消了一樣。在 macOS 上,signal 不適用於沒有父視窗的訊息框,因為由於平台限制,這些訊息框會同步執行。
    • title string (選填) - 訊息框的標題,某些平台可能不會顯示。
    • detail string (選填) - 訊息的額外資訊。
    • checkboxLabel string (選填) - 如果提供,訊息框將會包含一個帶有指定標籤的核取方塊。
    • checkboxChecked boolean (選填) - 核取方塊的初始勾選狀態。預設值為 false
    • icon (NativeImage | string) (選填)
    • textWidth 整數 (選填) macOS - 訊息框中文字的自訂寬度。
    • cancelId 整數 (選填) - 要用於透過 Esc 鍵取消對話框的按鈕索引。預設情況下,這會被指定給標籤為「cancel」或「no」的第一個按鈕。如果沒有此類標籤的按鈕且未設定此選項,則會使用 0 作為傳回值。
    • noLink boolean (選填) - 在 Windows 上,Electron 會嘗試找出 buttons 中哪些是常見的按鈕(例如「取消」或「是」),並將其他按鈕顯示為對話框中的命令連結。這可以使對話框以現代 Windows 應用程式的風格顯示。如果您不喜歡這種行為,可以將 noLink 設定為 true
    • normalizeAccessKeys boolean (選填) - 正規化跨平台的鍵盤快速鍵。預設值為 false。啟用此選項會假設按鈕標籤中使用 & 來放置鍵盤快捷鍵,並且標籤會被轉換,以便它們在每個平台上正確運作,& 字元在 macOS 上會被移除,在 Linux 上會轉換為 _,而在 Windows 上則保持不變。例如,標籤為 Vie&w 的按鈕在 Linux 上會轉換為 Vie_w,在 macOS 上會轉換為 View,並且可以在 Windows 和 Linux 上透過 Alt-W 選取。

傳回 Promise<Object> - 解析為包含以下屬性的 Promise

  • response number - 被點擊按鈕的索引。
  • checkboxChecked boolean - 如果設定了 checkboxLabel,則為核取方塊的勾選狀態。否則為 false

顯示一個訊息框。

window 引數允許對話框附加到父視窗,使其成為強制回應視窗。

dialog.showErrorBox(title, content)

  • title string - 要在錯誤框中顯示的標題。
  • content string - 要在錯誤框中顯示的文字內容。

顯示一個強制回應對話框,其中顯示錯誤訊息。

此 API 可以在 app 模組發出的 ready 事件之前安全地呼叫,它通常用於報告啟動早期的錯誤。如果在 Linux 上應用程式 ready 事件之前呼叫,則訊息將會發送到 stderr,並且不會出現 GUI 對話框。

dialog.showCertificateTrustDialog([window, ]options) macOS Windows

  • window BaseWindow (選用)
  • options 物件
    • certificate Certificate - 要信任/匯入的憑證。
    • message string - 要向使用者顯示的訊息。

傳回 Promise<void> - 在顯示憑證信任對話框時解析。

在 macOS 上,這會顯示一個強制回應對話框,其中顯示訊息和憑證資訊,並讓使用者選擇信任/匯入憑證。如果您提供 window 參數,對話框將會附加到父視窗,使其成為強制回應視窗。

在 Windows 上,由於使用的 Win32 API,選項受到更多限制。

  • 不使用 message 參數,因為作業系統會提供自己的確認對話框。
  • 會忽略 window 參數,因為無法使此確認對話框成為強制回應視窗。

書籤陣列

showOpenDialogshowOpenDialogSyncshowSaveDialogshowSaveDialogSync 會傳回一個 bookmarks 陣列。

建置類型securityScopedBookmarks 布林值傳回類型傳回值
macOS masTrue成功['LONGBOOKMARKSTRING']
macOS masTrue錯誤[''] (空字串陣列)
macOS masFalseNA[] (空陣列)
non mas任何NA[] (空陣列)

工作表

在 macOS 上,如果您在 window 參數中提供 BaseWindow 參考,則對話框會以附加到視窗的工作表形式呈現,如果沒有提供視窗,則會以強制回應視窗的形式呈現。

您可以呼叫 BaseWindow.getCurrentWindow().setSheetOffset(offset) 來變更工作表附加到視窗框架的偏移量。