fix: 复制按钮功能修复 - 正确存储和读取原始内容
This commit is contained in:
@@ -249,6 +249,9 @@
|
||||
div.className = `message ${role}`;
|
||||
|
||||
const avatar = role === 'user' ? '👤' : '🤖';
|
||||
// 准备复制内容 - 转义双引号用于HTML属性
|
||||
const contentForCopy = content.replace(/&/g, '&').replace(/"/g, '"');
|
||||
|
||||
let html = `<div class="message-avatar">${avatar}</div><div class="message-body">`;
|
||||
|
||||
// 思考内容
|
||||
@@ -265,14 +268,12 @@
|
||||
// 消息内容
|
||||
html += `<div class="message-content">`;
|
||||
if (role === 'assistant') {
|
||||
// AI消息用Markdown渲染
|
||||
html += `<div class="markdown-body">${marked.parse(content)}</div>`;
|
||||
} else {
|
||||
// 用户消息普通显示
|
||||
html += `<div class="user-message-text">${escapeHtml(content)}</div>`;
|
||||
}
|
||||
// 复制按钮
|
||||
html += `<button class="copy-btn" onclick="copyMessage(this, '${escapeHtml(content).replace(/'/g, "\\'")}')"><i class="ri-copy-line"></i> 复制</button>`;
|
||||
html += `<button class="copy-btn" data-content="${contentForCopy}" onclick="copyMessage(this)"><i class="ri-copy-line"></i> 复制</button>`;
|
||||
html += `</div>`;
|
||||
|
||||
// Agent信息
|
||||
@@ -299,11 +300,19 @@
|
||||
}
|
||||
}
|
||||
|
||||
function copyMessage(btn, text) {
|
||||
function copyMessage(btn) {
|
||||
// 获取存储的内容并解码HTML实体
|
||||
let text = btn.dataset.content || '';
|
||||
// 解码HTML实体
|
||||
text = text.replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>').replace(/'/g, "'");
|
||||
|
||||
navigator.clipboard.writeText(text).then(() => {
|
||||
btn.innerHTML = '<i class="ri-check-line"></i> 已复制';
|
||||
btn.classList.add('copied');
|
||||
setTimeout(() => { btn.innerHTML = '<i class="ri-copy-line"></i> 复制'; btn.classList.remove('copied'); }, 2000);
|
||||
}).catch(err => {
|
||||
console.error('复制失败:', err);
|
||||
btn.innerHTML = '<i class="ri-error-line"></i> 失败';
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user