摘要:使用處理窗體崩潰和掛起此系列文章的應(yīng)用示例已發(fā)布于可以或下載后運(yùn)行查看歡迎模塊將在渲染器進(jìn)程崩潰或掛起時(shí)發(fā)出事件您可以監(jiān)聽(tīng)這些事件并給用戶(hù)重新加載等待或關(guān)閉該窗口的機(jī)會(huì)在瀏覽器中打開(kāi)完整的文檔進(jìn)程崩潰后重載窗體支持進(jìn)程在這個(gè)示例中我們
使用 Electron 處理窗體崩潰和掛起
此系列文章的應(yīng)用示例已發(fā)布于 GitHub: electron-api-demos-Zh_CN. 可以 Clone 或下載后運(yùn)行查看. 歡迎 Star .
BrowserWindow 模塊將在渲染器進(jìn)程崩潰或掛起時(shí)發(fā)出事件. 您可以監(jiān)聽(tīng)這些事件, 并給用戶(hù)重新加載, 等待或關(guān)閉該窗口的機(jī)會(huì).
在瀏覽器中打開(kāi) 完整的 API 文檔 .
進(jìn)程崩潰后重載窗體支持: Win, macOS, Linux | 進(jìn)程: Main
在這個(gè)示例中我們創(chuàng)建一個(gè)新窗口 (通過(guò) remote 模塊) 并提供了一個(gè)使用 process.crash() 方法強(qiáng)制崩潰的鏈接.
當(dāng)前窗體正在監(jiān)聽(tīng)崩潰事件, 當(dāng)此事件發(fā)生時(shí), 它提供用戶(hù)兩個(gè)選項(xiàng): 重新加載或關(guān)閉.
渲染器進(jìn)程
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: "渲染器進(jìn)程崩潰", message: "這個(gè)進(jìn)程已經(jīng)崩潰.", buttons: ["重載", "關(guān)閉"] } dialog.showMessageBox(options, function (index) { if (index === 0) win.reload() else win.close() }) }) win.on("close", function () { win = null }) win.loadURL(crashWinPath) win.show() })進(jìn)程掛起后重載窗體
支持: Win, macOS, Linux | 進(jìn)程: Main
在這個(gè)示例中我們創(chuàng)建一個(gè)新窗口 (通過(guò) remote 模塊) 并提供了一個(gè)使用 process.hang() 方法強(qiáng)制掛起進(jìn)程的鏈接.
當(dāng)前窗體正在監(jiān)聽(tīng)進(jìn)程是否真正無(wú)響應(yīng) (這可能需要長(zhǎng)達(dá)30秒). 當(dāng)此事件發(fā)生時(shí), 它提供用戶(hù)兩個(gè)選項(xiàng): 重新加載或關(guān)閉.
渲染器進(jìn)程
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: "渲染器進(jìn)程掛起", message: "這個(gè)進(jìn)程已經(jīng)被掛起.", buttons: ["重載", "關(guān)閉"] } dialog.showMessageBox(options, function (index) { if (index === 0) win.reload() else win.close() }) }) win.on("close", function () { win = null }) win.loadURL(hangWinPath) win.show() })高級(jí)技巧
等待進(jìn)程再次響應(yīng).
在進(jìn)程掛起的的情況下, 第三個(gè)選擇是等待并查看問(wèn)題是否解決, 允許進(jìn)程再次響應(yīng). 為此, 請(qǐng)使用 BrowserWindow 的 "responsive" 事件, 如下所示:
win.on("responsive", function () { // 當(dāng)窗口再次響應(yīng)時(shí)做些什么 })
如果這邊文章對(duì)您有幫助, 感謝 下方點(diǎn)贊 或 Star GitHub: electron-api-demos-Zh_CN 支持, 謝謝.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/81700.html
摘要:當(dāng)設(shè)置了參數(shù)時(shí),將作為命令行參數(shù)傳遞。托盤(pán)關(guān)閉向和微信一樣,有的時(shí)候我們并不想讓用戶(hù)通過(guò)點(diǎn)關(guān)閉按鈕的時(shí)候就關(guān)閉程序,而是把程序最小化到托盤(pán),在托盤(pán)上做真正的退出操作。首先要監(jiān)聽(tīng)窗口的關(guān)閉事件,阻止用戶(hù)關(guān)閉操作的默認(rèn)行為。 showImg(https://segmentfault.com/img/remote/1460000016933565?w=960&h=640); 在某種情況下,我...
摘要:在開(kāi)發(fā)項(xiàng)目時(shí),可以先用網(wǎng)頁(yè)的形式開(kāi)發(fā)項(xiàng)目,等到網(wǎng)頁(yè)項(xiàng)目部分差不多完成后,再注入中,開(kāi)發(fā)網(wǎng)頁(yè)項(xiàng)目部分和窗體部分的交互在中使用后,將不會(huì)打包有關(guān)的代碼 electron是一兩年前挺火的一個(gè)框架本質(zhì)上是一個(gè)瀏覽器,但是集成了很多windows系統(tǒng)的功能,讓前端開(kāi)發(fā)也可以直接操作windows的窗體,做成一個(gè)實(shí)打?qū)嵉淖烂孳浖?團(tuán)隊(duì)主要的技術(shù)棧是react,所以考慮用react開(kāi)發(fā),方便維護(hù)。 ...
摘要:使用創(chuàng)建和管理窗體此系列文章的應(yīng)用示例已發(fā)布于可以或下載后運(yùn)行查看歡迎中的模塊允許您創(chuàng)建新的瀏覽器窗口或管理現(xiàn)有的瀏覽器窗口每個(gè)瀏覽器窗口都是一個(gè)單獨(dú)的進(jìn)程稱(chēng)為渲染器進(jìn)程這個(gè)進(jìn)程像控制應(yīng)用程序生命周期的主進(jìn)程一樣,可以完全訪問(wèn)查看完整 使用 Electron 創(chuàng)建和管理窗體 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: electron-api-demos-Zh_CN. 可以 Clon...
摘要:會(huì)默認(rèn)顯示邊框和標(biāo)題欄,如下圖我們來(lái)看一下如何自定義一個(gè)更加有意思的標(biāo)題欄,例如網(wǎng)易云音樂(lè)這種首先我們要把默認(rèn)的標(biāo)題欄刪掉,找到主進(jìn)程中創(chuàng)建窗體部分,時(shí)添加參數(shù)即可這樣會(huì)把標(biāo)題欄和邊框一并隱藏然后我們開(kāi)始制作自己的標(biāo)題欄創(chuàng)建組件這里 electron會(huì)默認(rèn)顯示邊框和標(biāo)題欄,如下圖 showImg(https://segmentfault.com/img/bVXwA5?w=412&h=6...
摘要:會(huì)默認(rèn)顯示邊框和標(biāo)題欄,如下圖我們來(lái)看一下如何自定義一個(gè)更加有意思的標(biāo)題欄,例如網(wǎng)易云音樂(lè)這種首先我們要把默認(rèn)的標(biāo)題欄刪掉,找到主進(jìn)程中創(chuàng)建窗體部分,時(shí)添加參數(shù)即可這樣會(huì)把標(biāo)題欄和邊框一并隱藏然后我們開(kāi)始制作自己的標(biāo)題欄創(chuàng)建組件這里 electron會(huì)默認(rèn)顯示邊框和標(biāo)題欄,如下圖 showImg(https://segmentfault.com/img/bVXwA5?w=412&h=6...
閱讀 2120·2021-11-05 09:42
閱讀 2863·2021-09-23 11:21
閱讀 2859·2019-08-30 14:00
閱讀 3324·2019-08-30 13:15
閱讀 474·2019-08-29 17:18
閱讀 3564·2019-08-29 16:29
閱讀 2764·2019-08-29 14:06
閱讀 2803·2019-08-23 14:41