Electron dialog 模塊

2019-08-14 19:21 更新

dialog 模塊提供了api來展示原生的系統(tǒng)對話框,例如打開文件框,alert框,所以web應(yīng)用可以給用戶帶來跟系統(tǒng)應(yīng)用相同的體驗(yàn).

對話框例子,展示了選擇文件和目錄:

var win = ...;  // BrowserWindow in which to show the dialog
const dialog = require('electron').dialog;
console.log(dialog.showOpenDialog({ properties: [ 'openFile', 'openDirectory', 'multiSelections' ]}));

OS X 上的注意事項(xiàng): 如果你想像sheets一樣展示對話框,只需要在browserWindow 參數(shù)中提供一個 BrowserWindow 的引用對象.

方法

dialog 模塊有以下方法:

dialog.showOpenDialog([browserWindow, ]options[, callback])

  • browserWindow BrowserWindow (可選)
  • options Object
    • title String
    • defaultPath String
    • filters Array
    • properties Array - 包含了對話框的特性值, 可以包含 openFileopenDirectorymultiSelections and createDirectory
  • callback Function (可選)

成功使用這個方法的話,就返回一個可供用戶選擇的文件路徑數(shù)組,失敗返回 undefined.

filters 當(dāng)需要限定用戶的行為的時(shí)候,指定一個文件數(shù)組給用戶展示或選擇. 例如:

{
  filters: [
    { name: 'Images', extensions: ['jpg', 'png', 'gif'] },
    { name: 'Movies', extensions: ['mkv', 'avi', 'mp4'] },
    { name: 'Custom File Type', extensions: ['as'] },
    { name: 'All Files', extensions: ['*'] }
  ]
}

extensions 數(shù)組應(yīng)當(dāng)只包含擴(kuò)展名,不應(yīng)該包含通配符或'.'號 (例如 'png' 正確,但是 '.png'  '*.png' 不正確). 展示全部文件的話, 使用 '*' 通配符 (不支持其他通配符).

如果 callback 被調(diào)用, 將異步調(diào)用 API ,并且結(jié)果將用過 callback(filenames) 展示.

注意: 在 Windows 和 Linux ,一個打開的 dialog 不能既是文件選擇框又是目錄選擇框, 所以如果在這些平臺上設(shè)置 properties 的值為 ['openFile', 'openDirectory'] , 將展示一個目錄選擇框.

dialog.showSaveDialog([browserWindow, ]options[, callback])

  • browserWindow BrowserWindow (可選)
  • options Object
    • title String
    • defaultPath String
    • filters Array
  • callback Function (可選)

成功使用這個方法的話,就返回一個可供用戶選擇的文件路徑數(shù)組,失敗返回 undefined.

filters 指定展示一個文件類型數(shù)組, 例子 dialog.showOpenDialog .

如果 callback 被調(diào)用, 將異步調(diào)用 API ,并且結(jié)果將用過 callback(filenames) 展示.

dialog.showMessageBox([browserWindow, ]options[, callback])

  • browserWindow BrowserWindow (可選)
  • options Object
    • type String - 可以是 "none", "info", "error", "question"  "warning". 在 Windows, "question" 與 "info" 展示圖標(biāo)相同, 除非你使用 "icon" 參數(shù).
    • buttons Array - buttons 內(nèi)容,數(shù)組.
    • defaultId Integer - 在message box 對話框打開的時(shí)候,設(shè)置默認(rèn)button選中,值為在 buttons 數(shù)組中的button索引.
    • title String - message box 的標(biāo)題,一些平臺不顯示.
    • message String - message box 內(nèi)容.
    • detail String - 額外信息.
    • icon NativeImage
    • cancelId Integer - 當(dāng)用戶關(guān)閉對話框的時(shí)候,不是通過點(diǎn)擊對話框的button,就返回值.默認(rèn)值為對應(yīng) "cancel" 或 "no" 標(biāo)簽button 的索引值, 或者如果沒有這種button,就返回0. 在 OS X 和 Windows 上, "Cancel" button 的索引值將一直是 cancelId, 不管之前是不是特別指出的.
    • noLink Boolean - 在 Windows ,Electron 將嘗試識別哪個button 是普通 button (如 "Cancel" 或 "Yes"), 然后再對話框中以鏈接命令(command links)方式展現(xiàn)其它的 button . 這能讓對話框展示得很炫酷.如果你不喜歡這種效果,你可以設(shè)置 noLink  true.
  • callback Function

展示 message box, 它會阻塞進(jìn)程,直到 message box 關(guān)閉為止.返回點(diǎn)擊按鈕的索引值.

如果 callback 被調(diào)用, 將異步調(diào)用 API ,并且結(jié)果將用過 callback(response) 展示.

dialog.showErrorBox(title, content)

展示一個傳統(tǒng)的包含錯誤信息的對話框.

+

 app 模塊觸發(fā) ready 事件之前,這個 api 可以被安全調(diào)用,通常它被用來在啟動的早期階段報(bào)告錯誤. 在 Linux 上,如果在 app 模塊觸發(fā) ready 事件之前調(diào)用,message 將會被觸發(fā)顯示stderr,并且沒有實(shí)際GUI 框顯示.


可使用的修飾符
  • Command 或者 Cmd 
  • Control 或者 Ctrl 
  • CommandOrControl 或者 CmdOrCtrl 
  • Alt
  • Option
  • AltGr
  • Shift
  • Super

可使用的鍵盤符

  • 0 - 9 (0 到 9)
  • A - Z (A 到 Z)
  • F1 - F24 (F1 到 F24)
  • 標(biāo)點(diǎn)符號: ~, !, @, #, $, 等.
  • Plus
  • Space
  • Tab
  • Backspace
  • Delete
  • Insert
  • Return (or Enter as alias)
  • Up, Down, Left and Right (箭頭)
  • Home 和 End 
  • PageUp 和 PageDown
  • Escape 或者 Esc
  • VolumeUp, VolumeDown 和 VolumeMute
  • MediaNextTrack, MediaPreviousTrack, MediaStop 和 MediaPlayPause
  • PrintScreen


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號