diff --git a/frontend/src/views/chat/components/botmsg.vue b/frontend/src/views/chat/components/botmsg.vue index b20f2dcc3..b1f3a9f08 100644 --- a/frontend/src/views/chat/components/botmsg.vue +++ b/frontend/src/views/chat/components/botmsg.vue @@ -31,6 +31,7 @@ import { sanitizeHTML, safeMarkdownToHTML, createSafeImage, isValidImageURL } fr marked.use({ mangle: false, headerIds: false, + breaks: true, // 全局启用单个换行支持 }); const emit = defineEmits(['scroll-bottom']) const renderer = new marked.Renderer(); @@ -104,22 +105,27 @@ const processMarkdown = (markdownText) => { // 首先对 Markdown 内容进行安全处理 const safeMarkdown = safeMarkdownToHTML(markdownText); - // 自定义安全的渲染器处理图片 - const renderer = { - image(href, title, text) { - // 验证图片 URL 是否安全 - if (!isValidImageURL(href)) { - return `
无效的图片链接
`; - } - // 使用安全的图片创建函数 - return createSafeImage(href, text || '', title || ''); + // 创建自定义渲染器实例,继承默认渲染器 + const customRenderer = new marked.Renderer(); + // 覆盖图片渲染方法 + customRenderer.image = function(href, title, text) { + // 验证图片 URL 是否安全 + if (!isValidImageURL(href)) { + return `无效的图片链接
`; } + // 使用安全的图片创建函数 + return createSafeImage(href, text || '', title || ''); }; - marked.use({ renderer }); + // 创建临时的 marked 配置,包含 renderer 和 breaks 选项 + // breaks: true 会将单个换行渲染为