diff --git a/js/components/chat-area.js b/js/components/chat-area.js
index 37f4bb7..d14e6dc 100644
--- a/js/components/chat-area.js
+++ b/js/components/chat-area.js
@@ -86,7 +86,11 @@ export function appendMessageDOM(msg, index) {
`;
}
- contentHtml += `
${safeMarkdown(safeContent)}
`;
+ if (safeContent) {
+ contentHtml += `${safeMarkdown(safeContent)}
`;
+ } else {
+ contentHtml += ``;
+ }
} else {
contentHtml += `${escapeHtml(safeContent)}
`;
}
diff --git a/js/components/input-area.js b/js/components/input-area.js
index aab23a3..f81151f 100644
--- a/js/components/input-area.js
+++ b/js/components/input-area.js
@@ -264,13 +264,12 @@ export async function sendMessage() {
if (loadingDots) loadingDots.remove();
if (loadingText) loadingText.remove();
- // 获取已有的流式内容
const contentDiv = placeholder?.querySelector('.msg-content');
- const existingContent = contentDiv?.textContent || '';
+ // 保存部分消息(直接用 assistantContent,不从 DOM 读)
const partialMsg = {
role: 'assistant',
- content: existingContent || '',
+ content: assistantContent,
timestamp: Date.now(),
...(modelName && { model: modelName }),
...(thinkContent && { think: thinkContent }),
@@ -278,10 +277,14 @@ export async function sendMessage() {
};
currentSession.messages.push(partialMsg);
- if (contentDiv && existingContent) {
- contentDiv.innerHTML = safeMarkdown(existingContent) + '[已停止]
';
- } else {
- if (contentDiv) contentDiv.innerHTML = '[已停止]
';
+ // 更新 DOM
+ if (contentDiv) {
+ let html = '';
+ if (assistantContent) {
+ html = safeMarkdown(assistantContent);
+ }
+ html += '[已停止]
';
+ contentDiv.innerHTML = html;
}
appendSystemMessage('⏹ 已停止生成');
@@ -293,23 +296,23 @@ export async function sendMessage() {
return;
}
+ // 其他错误
const placeholder = document.querySelector('#messagesContainer .message.assistant:last-child');
const loadingDots = placeholder?.querySelector('.loading-dots');
const loadingText = placeholder?.querySelector('.loading-text');
if (loadingDots) loadingDots.remove();
if (loadingText) loadingText.remove();
- const existingContent = placeholder?.querySelector('.msg-content')?.textContent || '';
+ const contentDiv = placeholder?.querySelector('.msg-content');
- if (existingContent) {
+ if (assistantContent && contentDiv) {
const partialMsg = {
role: 'assistant',
- content: existingContent + '\n\n`[已中断]`',
+ content: assistantContent + '\n\n`[已中断]`',
timestamp: Date.now(),
};
currentSession.messages.push(partialMsg);
- const contentDiv = placeholder?.querySelector('.msg-content');
- if (contentDiv) contentDiv.innerHTML = `${existingContent}
[已中断]
`;
+ contentDiv.innerHTML = safeMarkdown(assistantContent) + '[已中断]
';
await saveCurrentSession();
} else {
if (placeholder) placeholder.remove();