下载Quick start项目

这里为了便于演示,我们直接从GitHub上下载Quick start项目

git clone https://github.com/electron/electron-quick-start

cd electron-quick-start

npm install

安装成功后,执行npm start运行项目。就可以看到hello world界面了。

阻止关闭方法一

这里直接监听onbeforeunload事件,每当页面刷新或关闭时,都会触发这个事件。在index.html中我们添加下面一段代码

//index.html

window.onbeforeunload = (e) => {

console.log('I do not want to be closed')

e.returnValue = false

}

这样,我们无论点击关闭,还是使用alt+f4都无法将页面关闭。效果如图。

chrome在如果没有任何键盘输入操作的情况下,执行该监听方法时会在console界面里抛出一个error,不必在意。

这么做虽然能够实现我们的需求,但同时存在一些问题:

应用真的无法关闭,除非终止进程

页面既无法关闭,也无法刷新

方法二

我们在main.js中监听close事件。定义一个flag标识是否可以关闭。如果不可以关闭,则阻止该事件。

//main.js

let canQuit = false;

mainWindow.on('close', (event) => {

if (!canQuit) {

event.preventDefault();}

});

我个人更推荐使用第二种方法,因为该方法可以自由的决定页面是否真的需要关闭,而且不会妨碍页面刷新。

那么如何关闭呢?

这里我们注册一个全局的快捷键,这个快捷键可以修改canQuit这个变量的值,从而可以让程序顺利退出。具体实现可参考下面代码。

const {app, BrowserWindow,globalShortcut,dialog} = require('electron') //这里需要引入globalShortcut和dialog

app.on('ready', () => {

globalShortcut.register('CommandOrControl+Alt+K', () => {

dialog.showMessageBox({

type: 'info',

title: 'Information',

message: 'Do you really want to close the application?',

buttons: ['Yes','No']

},(index)=>{

console.log('you chose',index)

if(index===0){

canQuit=true;

app.quit();

}

})

})

})

效果如下

electron 点击关闭_electron阻止应用关闭相关推荐

  1. 阻止计算机系统自动更新,W10电脑系统如何阻止并关闭自动更新

    W10电脑系统如何阻止并关闭自动更新?很多用户升级W10 1709版本之后,发现电脑系统又自动下载一些电脑系统更新了,这让用户很是郁闷,其实想要关闭自动更新很容易,下面请随小编一起操作! W10 17 ...

  2. 多御安全浏览器下载被阻止怎么办?关闭下载阻止的方法

    现在的浏览器安全性能不断提升,就拿多御安全浏览器来说,多御安全浏览器(www.duoyux.com)是一款功能强大.界面简洁的浏览器.它的专业功能成为了许多用户比较喜欢用的一款浏览工具.经过不断的优化 ...

  3. HTML一级菜单和二级菜单区别,JavaScript点击一级菜单打开和关闭二级菜单

    [JavaScript点击一级菜单打开和关闭二级菜单] ``` Document #sub_menu_1,#sub_menu_2{ display: none; } ul li:hover{ curs ...

  4. if vue 跳出_vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍

    vue如何简单的实现弹框,遮罩,点击其他区域关闭弹框, 简单的思路是以一个div作为遮罩, 控制其的v-if(v-show)即可, 掌握到技巧既可以任意扩展. v-if 是直接删除dom节点, 就是这 ...

  5. .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态

    在 Windows 系统中,一段时间不操作键盘和鼠标,屏幕便会关闭,系统会进入睡眠状态.但有些程序(比如游戏.视频和演示文稿)在运行过程中应该阻止屏幕关闭,否则屏幕总是关闭,会导致体验会非常糟糕. 本 ...

  6. Edge兼容IE,Edge关闭弹窗阻止

    1.Edge兼容IE "..." "设置"  "默认浏览器" "让 Internet Explorer 在 Microsoft E ...

  7. 点击遮罩层的背景关闭遮罩层

    开发工具与关键技术:Adobe Dreamweaver CC 作者:黄灿 撰写时间:2019.1.16 在模仿华为官方网页的练习当中我发现华为官网中有一个遮罩层是随便点击遮罩层的背景也能关闭掉遮罩层, ...

  8. 点击遮罩层的背景关闭遮罩层(HTML)

    在模仿华为官方网页的练习当中我发现华为官网中有一个遮罩层是随便点击遮罩层的背景也能关闭掉遮罩层,但唯独点击内容区域不会关闭掉遮罩层.于是我开始模仿这个写案例,连内容也一模一样(因为这个练习就是要写出和 ...

  9. [乱说]Electron 无边框窗口最大化最小化关闭功能

    title: '[乱说]Electron 无边框窗口最大化最小化关闭功能' date: 2017-11-21 21:43:40 tags: Electron 无边框窗口最大化最小化关闭功能 目的 实现 ...

最新文章

  1. 机器人瓦力船长机器人_警察“瓦力”来啦!机器人巡逻南京路 这样的它你喜欢吗?...
  2. mysql 中文截取_mysql 截取中文字符
  3. 一个html文档所需要的最基本的标记对是,川大《WEB技术》19秋在线作业1题目【标准答案】...
  4. DNS域名服务器双master+ntp时间服务器双主+keepalived企业高可用方案 附脚本
  5. 基于排队理论的云计算模型的MATLAB仿真
  6. java转json jar包_java转换json需导入的jar包说明
  7. 本地不安装Oracle,plsql远程连接数据库
  8. 朴素贝叶斯趣味挑战项目
  9. Oracle客户端与java_Oracle 谈 JavaFX 及 Java 客户端技术的未来
  10. scala map与mapPartitions区别
  11. 牛客网 牛客小白月赛2 H.武-最短路(Dijkstra)
  12. SpringBoot2.2.X整合ElasricSearch7.8
  13. python镜像安装教程_PIP镜像方式安装PYTHON包步骤
  14. 物联网让生活更加轻松的五种方式
  15. 福利,《2021全国交通大数据行业应用报告》发布,限时免费领取纸质版
  16. Redis教程–事务机制基本介绍
  17. System.StackOverflowException
  18. Louvain 算法
  19. 使用PfamScan的API对蛋白结构域进行注释
  20. 【51单片机】串口通信

热门文章

  1. 我的职业生涯规划(转)
  2. opencv中的waitKey函数
  3. websocket发送文字,图片及语音(thinkjs-TS项目)
  4. Redis的性能监控指标
  5. Java常见的几种集合类
  6. sourcetree 卡顿_快手与直播延迟卡顿较劲的这些年
  7. 江西省电子专题大赛考点讲解四:CD4066四双向模拟开关
  8. Vue中数组更新,达到更新数组的几种方法
  9. Vscode自动更新失败,显示vscode updates may fail due to anti-virus software的简单易操作的解决方法
  10. VC数据库编程总结(二)