fix: complete html escape and use code arg in auto-submit callback

This commit is contained in:
2026-03-09 10:53:20 +08:00
parent 04bb023c2e
commit 65022968a5
2 changed files with 5 additions and 5 deletions

View File

@@ -60,7 +60,7 @@ function send() {
const renderer = new Renderer() const renderer = new Renderer()
renderer.code = function ({ text, lang }: { text: string; lang?: string }) { renderer.code = function ({ text, lang }: { text: string; lang?: string }) {
const escape = (s: string) => const escape = (s: string) =>
s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;") s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;")
const label = lang ? `查看代码(${escape(lang)}` : "查看代码" const label = lang ? `查看代码(${escape(lang)}` : "查看代码"
return `<details class="code-block"><summary>${label}</summary><pre><code class="hljs${lang ? ` language-${escape(lang)}` : ""}">${escape(text)}</code></pre></details>` return `<details class="code-block"><summary>${label}</summary><pre><code class="hljs${lang ? ` language-${escape(lang)}` : ""}">${escape(text)}</code></pre></details>`
} }

View File

@@ -84,13 +84,13 @@ async function loadChallenge() {
challengeTitle.value = `#${data.display} ${data.title}` challengeTitle.value = `#${data.display} ${data.title}`
challengeContent.value = await marked.parse(data.content, { async: true }) challengeContent.value = await marked.parse(data.content, { async: true })
connectPrompt(data.task_ptr) connectPrompt(data.task_ptr)
onCodeComplete = async () => { onCodeComplete = async (code) => {
if (!conversationId.value) return if (!conversationId.value) return
try { try {
await Submission.create(taskId.value, { await Submission.create(taskId.value, {
html: html.value, html: code.html ?? "",
css: css.value, css: code.css ?? "",
js: js.value, js: code.js ?? "",
conversationId: conversationId.value, conversationId: conversationId.value,
}) })
} catch { } catch {