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');