如何在 Markojs 中渲染原始 HTML?
How do I render raw HTML in Markojs?
我正在使用 Markojs 作为我的 UI 库,我需要渲染包含在从服务器检索的数据模型中的原始 HTML。
例如,假设我从服务器检索的数据模型如下所示:
data = {
copy: "<p class='myClass'>Hello World!</p>"
}
我希望能够在我的 Marko 模板中渲染我的副本,如下所示:
.copy
${input.data.copy}
并让它正确呈现 HTML 元素,但它并没有按预期工作。它确实呈现到页面上,但它还在页面上显示 "<"
之前和之后的 ">"
作为文本。
看起来 this 是我需要的功能,但已被弃用。执行此操作的正确方法是什么?
解决方法如下:
.copy -- $!{input.data.copy}
Marko 默认转义文本值,但您可以使用 $!{input.data.copy}
(注意 !
)告诉 Marko 您需要原始的 HTML。
https://markojs.com/docs/syntax/#dynamic-text
当你这样做时,你实际上是在关闭 Marko 的安全功能,所以请确保如果你获得的任何动态内容来自不安全的来源,它会被转义到其他地方以防止代码防止被注入您的页面。
我正在使用 Markojs 作为我的 UI 库,我需要渲染包含在从服务器检索的数据模型中的原始 HTML。
例如,假设我从服务器检索的数据模型如下所示:
data = {
copy: "<p class='myClass'>Hello World!</p>"
}
我希望能够在我的 Marko 模板中渲染我的副本,如下所示:
.copy
${input.data.copy}
并让它正确呈现 HTML 元素,但它并没有按预期工作。它确实呈现到页面上,但它还在页面上显示 "<"
之前和之后的 ">"
作为文本。
看起来 this 是我需要的功能,但已被弃用。执行此操作的正确方法是什么?
解决方法如下:
.copy -- $!{input.data.copy}
Marko 默认转义文本值,但您可以使用 $!{input.data.copy}
(注意 !
)告诉 Marko 您需要原始的 HTML。
https://markojs.com/docs/syntax/#dynamic-text
当你这样做时,你实际上是在关闭 Marko 的安全功能,所以请确保如果你获得的任何动态内容来自不安全的来源,它会被转义到其他地方以防止代码防止被注入您的页面。