Taskbar Progress Bar (Windows & macOS)

    在Windows环境下,进度条被显示在任务栏按钮上。

    在MacOS环境下,进度条将被显示在dock栏图标上

    macOS 进度条


    这三种环境中的进度条功能由同一个API实现:实例下的setProgressBar()方法。 此方法以介于 01 之间的小数表示进度。 例如,如果有一个耗时很长的任务,它当前的进度是63%,那么你可以用setProgressBar(0.63)来显示这一进度。

    将参数设置为负值 (例如, -1) 将删除progress bar。 设定值大于 1 在 Windows 中将表示一个不确定的进度条 ,或在其他操作系统中显示为 100%。 一个不确定的progress bar 仍然处于活动状态,但不显示实际百分比, 并且用于当 您不知道一个操作需要多长时间才能完成的情况。

    示例

    在此示例中,我们将进度栏添加到main window中,该窗口会使用node.js的计时器实现随着时间的推移而进度增长。

    • index.html
    • main.js
    1. const { app, BrowserWindow } = require('electron')
    2. let progressInterval
    3. function createWindow () {
    4. const win = new BrowserWindow({
    5. width: 800,
    6. height: 600
    7. })
    8. win.loadFile('index.html')
    9. const INTERVAL_DELAY = 100 // ms
    10. let c = 0
    11. progressInterval = setInterval(() => {
    12. // update progress bar to next value
    13. // values between 0 and 1 will show progress, >1 will show indeterminate or stick at 100%
    14. win.setProgressBar(c)
    15. // increment or reset progress bar
    16. if (c < 2) {
    17. c += INCREMENT
    18. } else {
    19. c = (-INCREMENT * 5) // reset to a bit less than 0 to show reset state
    20. }
    21. }, INTERVAL_DELAY)
    22. }
    23. // before the app is terminated, clear both timers
    24. app.on('before-quit', () => {
    25. clearInterval(progressInterval)
    26. })
    27. app.on('window-all-closed', () => {
    28. if (process.platform !== 'darwin') {
    29. app.quit()
    30. }
    31. })
    32. app.on('activate', () => {
    33. if (BrowserWindow.getAllWindows().length === 0) {
    34. createWindow()
    35. })

    Open in Fiddle

    启动 Electron 应用程序后,Dock (macOS) 或 taskbar (Windows, Unity) 应该显示一个进度条, 从零开始, 到100%到完成。 应该显示不确定的 (Windows) 或短暂的固定到100% (其他操作系统) 并然后循环。

    macOS dock 进度条