diff --git a/index.html b/index.html index 3dcd95a..4851280 100644 --- a/index.html +++ b/index.html @@ -272,6 +272,9 @@ let origTranslations = []; let origTranslateOpen = []; let analysisVersion = 1; let helpState = {}; +// 「查看之前的写作建议」(
) 展开状态:翻译/切换等会重建左栏 DOM, +// 不记住的话翻译完成后会意外收起(用户实测)。 +let priorGuidanceOpen = false; let dirtyDuringRecheck = false; let transitioning = false; // 对话历史(快照)持久化:刷新后回对话页不丢理解/诊断/复检卡片(用户实测发现 + PM 同意修复)。 @@ -936,6 +939,9 @@ function bindAnnotationInteractions(wrap){ wrap.querySelectorAll('.annotation-card').forEach(el=>el.onclick=e=>{ if(!e.target.closest('.why-toggle')) activate(el.dataset.noteId); }); // 原文中文对照(逐句):对照行与批注同色同序号 —— 点击对照行可联动高亮原文句 wrap.querySelectorAll('[data-role="orig-translate"]').forEach(btn=>{ btn.onclick = toggleOrigTranslate; }); + // 记住「查看之前的写作建议」的展开状态(左栏重建后恢复,避免翻译完成被收起) + const prior = wrap.querySelector('.prior-guidance'); + if(prior) prior.addEventListener('toggle', ()=>{ priorGuidanceOpen = prior.open; }); wrap.querySelectorAll('.ot-line[data-note-id]').forEach(el=>{ el.onclick = () => activate(el.dataset.noteId); }); wrap.querySelectorAll('.why-toggle').forEach(btn=>btn.onclick=e=>{ e.stopPropagation(); @@ -990,7 +996,7 @@ function renderFocusOriginal(wrap){
这段在讲什么
${escapeHtml(meaningOf(current))}
`; const body = isRevisionTarget(current) - ? `${visibleMeaning}
查看之前的写作建议${fullDirection}${paper}
` + ? `${visibleMeaning}
查看之前的写作建议${fullDirection}${paper}
` : fullDirection + paper; wrap.className = 'original-workspace'; wrap.innerHTML = `${banner}${body}
和上下文怎么接
${escapeHtml(contextHintOf(current))}
`; @@ -1038,9 +1044,14 @@ function updateParagraphSwitcherState(){ } function renderOriginalPane(){ const wrap=$('#originalFull'); + // 重建 DOM 前记住滚动位置:「查看之前的写作建议」展开后点翻译/切视图等 + // 都会走到这里,不恢复会导致内容跳回顶部 + const body = wrap.closest('.pane-body'); + const scrollTop = body ? body.scrollTop : 0; wrap.innerHTML=''; if(originalView==='focus') renderFocusOriginal(wrap); else renderFullOriginal(wrap); renderParagraphSwitcher(); + if(body) body.scrollTop = scrollTop; } function updateProgress(){ const n = rewrittenCount();