Ktor:如何将Markdown渲染的原始HTML注入HTML DSL?
在Ktor HTML DSL中插入原始HTML片段的解决方案
Ktor的HTML DSL默认会对文本做HTML转义处理,直接用+添加原始HTML会被转义成字符实体,无法成为DOM的一部分。要解决这个问题,你可以使用DSL提供的unsafe代码块,它允许直接输出未转义的原始内容。
修改后的代码示例
val rawHtml = renderHtmlFromMarkdown(mdText) // "<p>That came from raw Html</p>" call.respondHtml(HttpStatusCode.OK) { head { title { +name } } body { h1 { +"Hello from $name!" } // 插入原始HTML的核心代码 unsafe { raw(rawHtml) } } }
关键说明
unsafe是Ktor HTML DSL专门用于输出未转义内容的构造器- 调用内部的
raw()方法传入原始HTML字符串,这段内容就会直接嵌入最终的DOM结构中,不会被转义 - 执行后生成的HTML响应会完全符合你的预期,原始HTML片段会正常成为页面的一部分
内容的提问来源于stack exchange,提问作者Wesley Chang
相关产品推荐
相关产品推荐

