🎨 优化对话消息前端渲染(未完成存在bug)

Signed-off-by: Echo <1711788888@qq.com>
This commit is contained in:
2026-03-02 01:14:42 +08:00
parent 8888d9ea85
commit 20d99cf3bf
3 changed files with 25 additions and 22 deletions

View File

@@ -11,6 +11,7 @@ import ProfilePage from './pages/ProfilePage'
import CharacterManagePage from './pages/CharacterManagePage'
import PresetManagePage from './pages/PresetManagePage'
import WorldbookManagePage from './pages/WorldbookManagePage'
import RegexScriptManagePage from './pages/RegexScriptManagePage'
import AdminPage from './pages/AdminPage'
function App() {
@@ -29,6 +30,7 @@ function App() {
<Route path="/characters" element={<CharacterManagePage />} />
<Route path="/presets" element={<PresetManagePage />} />
<Route path="/worldbooks" element={<WorldbookManagePage />} />
<Route path="/regex-scripts" element={<RegexScriptManagePage />} />
<Route path="/admin" element={<AdminPage />} />
</Routes>
</BrowserRouter>

View File

@@ -173,13 +173,10 @@ export default function MessageContent({ content, role, onChoiceSelect }: Messag
useEffect(() => {
console.log('[MessageContent] 原始内容:', content)
// 提取 markdown 代码块中的 HTML,并从原始内容中移除代码块标记
// 支持 ```html 和不带标识符的 ``` 包裹(后者在内容含 HTML 标签时识别为 HTML 块)
// 提取 markdown 代码块中的 HTML(仅识别 ```html 标识符的代码块
let processedContent = content
let remainingContent = content
let isHtmlCodeBlock = false
const htmlTagRegex = /<[a-zA-Z][^>]*>/
// 先尝试匹配 ```html 代码块
const explicitHtmlRegex = /```html\s*([\s\S]*?)```/gi
const htmlCodeBlocks: string[] = []
let htmlMatch
@@ -195,24 +192,6 @@ export default function MessageContent({ content, role, onChoiceSelect }: Messag
isHtmlCodeBlock = true
console.log('[MessageContent] 提取到 ```html 代码块:', processedContent)
console.log('[MessageContent] 剩余内容:', remainingContent)
} else {
// 尝试匹配无语言标识的 ``` 代码块,内容含 HTML 标签时也视为 HTML 块
const genericCodeRegex = /```\s*\n?([\s\S]*?)```/g
const genericBlocks: string[] = []
let genericMatch
while ((genericMatch = genericCodeRegex.exec(content)) !== null) {
const blockContent = genericMatch[1].trim()
if (htmlTagRegex.test(blockContent)) {
genericBlocks.push(blockContent)
}
}
if (genericBlocks.length > 0) {
processedContent = genericBlocks.join('\n')
remainingContent = content.replace(/```\s*\n?[\s\S]*?```/g, '').trim()
isHtmlCodeBlock = true
console.log('[MessageContent] 提取到通用 HTML 代码块:', processedContent)
console.log('[MessageContent] 剩余内容:', remainingContent)
}
}
// 解析状态面板