问题描述
登录弹窗(以及其他应用内模态弹窗)存在过早关闭的问题,具体表现为:
- 误触主界面导致弹窗消失:登录弹窗打开后,若鼠标点击主程序窗口内、弹窗边界外的任意区域,弹窗立即关闭,已输入的账户信息全部丢失。
- 拖选文本时弹窗消失:在弹窗内的输入框中拖拽选取文本时,若鼠标在拖拽过程中移出弹窗边界,弹窗也会立即关闭。
上述两种情况均导致用户输入丢失,需重新打开弹窗并重新填写,体验较差。
复现步骤
- 打开程序,触发登录弹窗(如点击"登录"按钮)。
- 在弹窗内输入部分账户信息。
- 鼠标点击主程序窗口任意位置(弹窗外)→ 弹窗立即关闭,输入丢失。
- 再次触发登录弹窗,在输入框内通过拖拽选中文本,拖拽过程中鼠标移出弹窗区域 → 弹窗关闭,输入丢失。
期望行为
登录弹窗应作为应用级模态框,行为预期如下:
- 仅通过用户明确操作关闭(点击取消/关闭按钮、登录成功后自动关闭)。
- 点击弹窗外区域或鼠标事件越过弹窗边界时,不应触发关闭。
- 弹窗关闭前应保留已输入内容,或至少提供「确认放弃输入」的二次确认。
可能原因
- 弹窗对失焦(focus out / blur)事件的处理过于激进,将父窗口的任何
WM_KILLFOCUS 或 WM_ACTIVATE 事件直接当作关闭意图。
- 点击弹窗背景遮罩(backdrop)关闭弹窗的逻辑可能存在边界判定问题,将任意鼠标事件均视为遮罩点击。
环境信息
问题描述
登录弹窗(以及其他应用内模态弹窗)存在过早关闭的问题,具体表现为:
上述两种情况均导致用户输入丢失,需重新打开弹窗并重新填写,体验较差。
复现步骤
期望行为
登录弹窗应作为应用级模态框,行为预期如下:
可能原因
WM_KILLFOCUS或WM_ACTIVATE事件直接当作关闭意图。环境信息