跳到主要內容

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 boolean (選用) 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 boolean (選用) macOS MAS - 為 Mac App Store 打包時,建立安全範圍書籤

傳回 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 上,除非入口網站後端為版本 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 boolean (選用) macOS - 顯示標籤輸入框,預設為 true
    • properties 字串陣列 (選用)
      • showHiddenFiles - 在對話框中顯示隱藏檔案。
      • createDirectory macOS - 允許從對話框建立新目錄。
      • treatPackageAsDirectory macOS - 將套件 (例如 .app 資料夾) 視為目錄而非檔案。
      • showOverwriteConfirmation Linux - 設定當使用者輸入已存在的檔案名稱時,是否向使用者顯示確認對話框。
      • dontAddToRecent Windows - 請勿將正在儲存的項目新增至最近的文件清單。
    • securityScopedBookmarks boolean (選用) 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 boolean (選用) macOS - 顯示標籤輸入框,預設為 true
    • properties 字串陣列 (選用)
      • showHiddenFiles - 在對話框中顯示隱藏檔案。
      • createDirectory macOS - 允許從對話框建立新目錄。
      • treatPackageAsDirectory macOS - 將套件 (例如 .app 資料夾) 視為目錄而非檔案。
      • showOverwriteConfirmation Linux - 設定當使用者輸入已存在的檔案名稱時,是否向使用者顯示確認對話框。
      • dontAddToRecent Windows - 請勿將正在儲存的項目新增至最近的文件清單。
    • securityScopedBookmarks boolean (選用) macOS MAS - 為 Mac App Store 打包時,建立安全範圍書籤。若啟用此選項且檔案尚不存在,則會在選取的路徑建立空白檔案。

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

  • canceled boolean - 對話框是否已取消。
  • 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 字串陣列 (選用) - 按鈕的文字陣列。在 Windows 上,空陣列將產生一個標示為「確定」的按鈕。
    • defaultId 整數 (選用) - 訊息框開啟時,預設選取之按鈕陣列中按鈕的索引。
    • title 字串 (選用) - 訊息框的標題,某些平台不會顯示標題。
    • detail 字串 (選用) - 訊息的額外資訊。
    • icon (NativeImage | 字串) (選用)
    • textWidth 整數 (選用) macOS - 訊息框中文字的自訂寬度。
    • cancelId 整數 (選用) - 用於透過 Esc 鍵取消對話框的按鈕索引。依預設,這會指派給標籤為「取消」或「否」的第一個按鈕。若不存在此類標籤按鈕且未設定此選項,則會使用 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 字串陣列 (選用) - 按鈕的文字陣列。在 Windows 上,空陣列將產生一個標示為「確定」的按鈕。
    • defaultId 整數 (選用) - 訊息框開啟時,預設選取之按鈕陣列中按鈕的索引。
    • signal AbortSignal (選用) - 傳遞 AbortSignal 的執行個體以選擇性地關閉訊息框,訊息框的行為將如同使用者已取消訊息框。在 macOS 上,signal 不適用於沒有父視窗的訊息框,因為由於平台限制,這些訊息框會同步執行。
    • title 字串 (選用) - 訊息框的標題,某些平台不會顯示標題。
    • detail 字串 (選用) - 訊息的額外資訊。
    • checkboxLabel 字串 (選用) - 若提供,訊息框將包含具有指定標籤的核取方塊。
    • checkboxChecked boolean (選用) - 核取方塊的初始核取狀態。預設為 false
    • icon (NativeImage | 字串) (選用)
    • textWidth 整數 (選用) macOS - 訊息框中文字的自訂寬度。
    • cancelId 整數 (選用) - 用於透過 Esc 鍵取消對話框的按鈕索引。依預設,這會指派給標籤為「取消」或「否」的第一個按鈕。若不存在此類標籤按鈕且未設定此選項,則會使用 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 字串 - 要在錯誤框中顯示的標題。
  • content 字串 - 要在錯誤框中顯示的文字內容。

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

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

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

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

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

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

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

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

書籤陣列

showOpenDialogshowSaveDialog 解析為具有 bookmarks 欄位的物件。此欄位是 Base64 編碼字串的陣列,其中包含已儲存檔案的安全範圍書籤資料。必須啟用 securityScopedBookmarks 選項才能顯示此欄位。

建置類型securityScopedBookmarks boolean傳回類型傳回值
macOS masTrue成功['LONGBOOKMARKSTRING']
macOS masTrue錯誤[''] (空字串陣列)
macOS masFalse不適用[] (空陣列)
non masany不適用[] (空陣列)

工作表

在 macOS 上,若您在 window 參數中提供 BaseWindow 參照,則對話框會顯示為附加到視窗的工作表;若未提供視窗,則會顯示為強制回應視窗。

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