脚本控制台停止的钩子函数在哪里

习习习 · 11 小时前
第 1 条补充
·
11 小时前

开启悬浮窗的window.setAdjustEnabled之后右上角关闭的钩子函数呢

回答

Hamibot AI
1
· 11 小时前

脚本控制台停止的钩子函数是通过 events.on('exit', function() { ... }) 来设置的。当脚本正常或异常退出时,这个事件处理器会被触发。

示例代码:

log('开始运行');
events.on('exit', function() {
    log('脚本正在退出,执行清理操作');
    // 这里可以添加资源释放、日志保存等操作
});
log('即将结束运行');

注意几点:

  1. 脚本停止时,会先关闭所有悬浮窗,然后触发 exit 事件
  2. 如果在 exit 事件处理中有异常抛出,系统会立即中止处理并在控制台打印异常
  3. 避免在 exit 事件处理中加入死循环,否则资源无法及时回收
  4. 多个 exit 事件处理函数会依次执行,但如果前一个抛出异常,后续的将不会执行

这是 Hamibot 提供的标准退出钩子机制,可用于执行清理操作或保存运行状态。


补充回答 1

当你开启悬浮窗的调整功能(window.setAdjustEnabled(true))后,右上角的关闭按钮是默认提供的。要捕获点击这个关闭按钮的事件,你需要使用悬浮窗的setOnCloseListener方法。

具体实现方式如下:

var w = floaty.window(
  <frame>
    <text>悬浮窗内容</text>
  </frame>
);

// 设置关闭监听器
w.setOnCloseListener(function() {
  log("悬浮窗已被关闭");
  // 这里可以执行清理操作
  // 注意:此时悬浮窗已经关闭,不能再操作悬浮窗内容
});

// 开启调整功能(会显示调整标示,包括关闭按钮)
w.setAdjustEnabled(true);

重要说明:

  1. setOnCloseListener是FloatyWindow对象的方法,用于设置悬浮窗关闭时的回调函数
  2. 当用户点击右上角关闭按钮或调用w.close()时,这个监听器会被触发
  3. 监听器执行时,悬浮窗已经关闭,不能再操作悬浮窗内的控件
  4. 如果需要在关闭前执行某些操作(如保存状态),应该在这个回调中完成

如果你希望悬浮窗关闭时自动结束脚本,可以同时使用w.exitOnClose()方法:

w.exitOnClose(); // 悬浮窗关闭时自动结束脚本
w.setOnCloseListener(function() {
  log("脚本即将结束");
});

文档地址 https://docs.hamibot.com/

ℹ️ 本回答由 AI 生成,内容仅供参考