From b573638bf88fd7e2fa9a335865733a38ee4f2481 Mon Sep 17 00:00:00 2001 From: hubian <908234780@qq.com> Date: Mon, 13 Apr 2026 10:37:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=8D=E5=88=B6=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=BC=A0=E7=BB=9F=E6=96=B9=E6=B3=95=E7=A1=AE?= =?UTF-8?q?=E4=BF=9D=E5=8F=AF=E7=94=A8=EF=BC=8C=E9=87=8D=E6=96=B0=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=B8=8D=E5=86=8D=E9=87=8D=E5=A4=8D=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/index.html | 48 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/templates/index.html b/templates/index.html index 966799d..803177c 100644 --- a/templates/index.html +++ b/templates/index.html @@ -171,6 +171,7 @@ let agents = []; let quickPhrases = []; let lastUserMessage = null; // 存储最后一条用户消息,用于重新生成 + let isRegenerating = false; // 标志:正在重新生成,跳过用户消息显示 document.addEventListener('DOMContentLoaded', () => { loadAgents(); @@ -240,7 +241,10 @@ case 'stream_end': document.getElementById('sendBtn').disabled = false; break; case 'user_message': lastUserMessage = data.message.content; // 存储最后一条用户消息 - appendMessage('user', data.message.content); + if (!isRegenerating) { + appendMessage('user', data.message.content); + } + isRegenerating = false; // 重置标志 break; case 'assistant_message': appendMessage('assistant', data.message.content, data.message.thinking_content, data.message.agent_name); document.getElementById('sendBtn').disabled = false; break; case 'error': showError(data.message); document.getElementById('sendBtn').disabled = false; break; @@ -313,24 +317,44 @@ function copyMessage(btn) { // 从隐藏input获取原始内容 - const hiddenInput = btn.closest('.message-body').querySelector('.copy-source'); + const actionsDiv = btn.parentElement; + const messageBody = actionsDiv.parentElement; + const hiddenInput = messageBody.querySelector('.copy-source'); if (!hiddenInput) { console.error('找不到复制源'); + btn.innerHTML = ' 失败'; return; } const text = hiddenInput.value; - navigator.clipboard.writeText(text).then(() => { - btn.innerHTML = ' 已复制'; - btn.classList.add('copied'); - setTimeout(() => { - btn.innerHTML = ' 复制'; - btn.classList.remove('copied'); - }, 2000); - }).catch(err => { + // 使用传统复制方法(兼容性更好) + const textarea = document.createElement('textarea'); + textarea.value = text; + textarea.style.position = 'fixed'; + textarea.style.left = '-9999px'; + textarea.style.top = '0'; + document.body.appendChild(textarea); + textarea.focus(); + textarea.select(); + + try { + const success = document.execCommand('copy'); + if (success) { + btn.innerHTML = ' 已复制'; + btn.classList.add('copied'); + setTimeout(() => { + btn.innerHTML = ' 复制'; + btn.classList.remove('copied'); + }, 2000); + } else { + btn.innerHTML = ' 失败'; + } + } catch (err) { console.error('复制失败:', err); btn.innerHTML = ' 失败'; - }); + } + + document.body.removeChild(textarea); } function regenerateMessage() { @@ -338,6 +362,8 @@ alert('没有可重新生成的消息'); return; } + // 设置重新生成标志,避免再次显示用户消息 + isRegenerating = true; // 移除最后一条助手消息 const container = document.getElementById('messagesContainer'); const messages = container.querySelectorAll('.message.assistant');