回答
脚本控制台停止的钩子函数是通过 events.on('exit', function() { ... }) 来设置的。当脚本正常或异常退出时,这个事件处理器会被触发。
示例代码:
log('开始运行');
events.on('exit', function() {
log('脚本正在退出,执行清理操作');
// 这里可以添加资源释放、日志保存等操作
});
log('即将结束运行');
注意几点:
- 脚本停止时,会先关闭所有悬浮窗,然后触发 exit 事件
- 如果在 exit 事件处理中有异常抛出,系统会立即中止处理并在控制台打印异常
- 避免在 exit 事件处理中加入死循环,否则资源无法及时回收
- 多个 exit 事件处理函数会依次执行,但如果前一个抛出异常,后续的将不会执行
这是 Hamibot 提供的标准退出钩子机制,可用于执行清理操作或保存运行状态。
补充回答 1
当你开启悬浮窗的调整功能(window.setAdjustEnabled(true))后,右上角的关闭按钮是默认提供的。要捕获点击这个关闭按钮的事件,你需要使用悬浮窗的setOnCloseListener方法。
具体实现方式如下:
var w = floaty.window(
<frame>
<text>悬浮窗内容</text>
</frame>
);
// 设置关闭监听器
w.setOnCloseListener(function() {
log("悬浮窗已被关闭");
// 这里可以执行清理操作
// 注意:此时悬浮窗已经关闭,不能再操作悬浮窗内容
});
// 开启调整功能(会显示调整标示,包括关闭按钮)
w.setAdjustEnabled(true);
重要说明:
setOnCloseListener是FloatyWindow对象的方法,用于设置悬浮窗关闭时的回调函数- 当用户点击右上角关闭按钮或调用
w.close()时,这个监听器会被触发 - 监听器执行时,悬浮窗已经关闭,不能再操作悬浮窗内的控件
- 如果需要在关闭前执行某些操作(如保存状态),应该在这个回调中完成
如果你希望悬浮窗关闭时自动结束脚本,可以同时使用w.exitOnClose()方法:
w.exitOnClose(); // 悬浮窗关闭时自动结束脚本
w.setOnCloseListener(function() {
log("脚本即将结束");
});
ℹ️ 本回答由 AI 生成,内容仅供参考