此係列文章的應用示例已發佈於 GitHub: electron-api-demos-Zh_CN. 能夠 Clone 或下載後運行查看. 歡迎 Star .html
BrowserWindow
模塊將在渲染器進程崩潰或掛起時發出事件. 您能夠監聽這些事件, 並給用戶從新加載, 等待或關閉該窗口的機會.git
在瀏覽器中打開 完整的 API 文檔 .github
支持: Win, macOS, Linux | 進程: Mainweb
在這個示例中咱們建立一個新窗口 (經過 remote
模塊) 並提供了一個使用 process.crash()
方法強制崩潰的連接.windows
當前窗體正在監聽崩潰事件, 當此事件發生時, 它提供用戶兩個選項: 從新加載或關閉.api
渲染器進程瀏覽器
const BrowserWindow = require('electron').remote.BrowserWindow const dialog = require('electron').remote.dialog const path = require('path') const processCrashBtn = document.getElementById('process-crash') processCrashBtn.addEventListener('click', function (event) { const crashWinPath = path.join('file://', __dirname, '../../sections/windows/process-crash.html') let win = new BrowserWindow({ width: 400, height: 320 }) win.webContents.on('crashed', function () { const options = { type: 'info', title: '渲染器進程崩潰', message: '這個進程已經崩潰.', buttons: ['重載', '關閉'] } dialog.showMessageBox(options, function (index) { if (index === 0) win.reload() else win.close() }) }) win.on('close', function () { win = null }) win.loadURL(crashWinPath) win.show() })
支持: Win, macOS, Linux | 進程: Mainelectron
在這個示例中咱們建立一個新窗口 (經過 remote
模塊) 並提供了一個使用 process.hang()
方法強制掛起進程的連接.ui
當前窗體正在監聽進程是否真正無響應 (這可能須要長達30秒). 當此事件發生時, 它提供用戶兩個選項: 從新加載或關閉.spa
渲染器進程
const BrowserWindow = require('electron').remote.BrowserWindow const dialog = require('electron').remote.dialog const path = require('path') const processHangBtn = document.getElementById('process-hang') processHangBtn.addEventListener('click', function (event) { const hangWinPath = path.join('file://', __dirname, '../../sections/windows/process-hang.html') let win = new BrowserWindow({ width: 400, height: 320 }) win.on('unresponsive', function () { const options = { type: 'info', title: '渲染器進程掛起', message: '這個進程已經被掛起.', buttons: ['重載', '關閉'] } dialog.showMessageBox(options, function (index) { if (index === 0) win.reload() else win.close() }) }) win.on('close', function () { win = null }) win.loadURL(hangWinPath) win.show() })
等待進程再次響應.
在進程掛起的的狀況下, 第三個選擇是等待並查看問題是否解決, 容許進程再次響應. 爲此, 請使用 BrowserWindow
的 "responsive" 事件, 以下所示:
win.on('responsive', function () { // 當窗口再次響應時作些什麼 })
若是這邊文章對您有幫助, 感謝 下方點贊 或 Star GitHub: electron-api-demos-Zh_CN 支持, 謝謝.