You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rebol/Red VID疑问:为何关闭事件会被立即触发?

解决REBOL中窗口关闭事件被立即触发的问题

我来帮你搞定这个问题~你遇到的情况是因为你写的query-on-close函数没有对事件类型做过滤,导致任何事件触发时都会执行它,包括窗口刚初始化完成的那个事件,所以才会一运行就打印"query-on-close",而不是等你点关闭按钮。

咱们来修改一下代码,让它只响应关闭事件:

query-on-close: func[face event][
    ; 只处理关闭类型的事件
    if event-type? event = 'close [
        print "query-on-close"
        remove-event-func :query-on-close
    ]
    RETURN event
]
view layout [ do [ insert-event-func :query-on-close ] ]

核心改动就是加了if event-type? event = 'close这个判断:

  • event-type? event会获取当前事件的类型,比如窗口创建、鼠标点击、窗口关闭等
  • 只有当事件类型是'close(也就是点击窗口关闭按钮触发的事件)时,才会执行打印和移除事件函数的逻辑
  • 其他事件触发时,函数会直接返回事件,不会执行额外操作

这样修改后,你运行代码时,只有点击窗口的关闭按钮,才会看到"query-on-close"的输出,完全符合你的预期啦。

内容的提问来源于stack exchange,提问作者user310291

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:30:12