1.3 KiB
1.3 KiB
发现记录
2026-09-13
- “定位”按钮对应
user-outline-panel;buildUserOutlineItems()当前只扫描messagesDiv.querySelectorAll('.msg.user[data-message-id]'),因此只包含已渲染的最近消息。 session_info已携带historyCursor/historyTotal,服务端load_history_page可按before返回旧消息页;现有前端收到该响应后会无条件prependHistoryMessages(),所以不能直接用现有手动分页状态填充定位列表。- 旧消息点击定位需要同时处理两类目标:已渲染消息直接滚动;未渲染消息先通过消息索引加载对应页,再将聊天区滚动到目标。完整索引缓存不能依赖 DOM 元素 ID。
- 定位面板本身已有独立
max-height和overflow-y: auto,不会因为完整索引而扩大聊天区;需要保留该隔离边界。 - 旧消息点击定位使用独立的
load_history_page目标页请求:按消息索引只取包含目标的一页,进入聊天区后再滚动到目标;完整定位索引请求只保存用户消息摘要,不渲染旧消息。 session_history_chunk当前按activeHistoryPageRequest分支后统一调用prependHistoryMessages();独立定位请求必须用独立 request 状态在该分支前截获,否则会破坏“隐藏历史不占聊天空间”的要求。