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