electron 托盘图标右击时和点击系统状态栏的事件冲突

故障原因:没有使用防抖,加上js的防抖就可以解决了。

JS中的防抖应用一看就会

1. 定义一个防抖函数:

//简易的debounce闭包防抖函数
/* 需要让debounce的返回值是一个函数
    fn : 回调函数  传进来的是正真的业务逻辑
    delay : 延时时间
*/
function debounce(fn, delay) {
	let time = null; //time用来控制事件的触发
	return function() {
		if (time !== null) {
			clearTimeout(time);
		}
		time = setTimeout(() => {
			fn.call(this);
			//利用call(),让this的指针从指向window 转成指向input
		}, delay)
	}
}

2. 在托盘右击事件中使用

闭包的形式调用,又加深了对闭包的理解!

//右键点击图标时,出现的菜单,通过Menu.buildFromTemplate定制,这里只包含退出程序的选项。
tray.on('right-click', debounce(() => {
	tray.popUpContextMenu(menuConfig)
}, 120))

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注