2

伙计们,我想传递一个包含 html 字符的参数Google Closure Template,但我得到的只是文字 html 文本。这个怎么做?

到目前为止,我尝试过的是:

{template .modal autoescape="strict" kind="html"}
   {$html_content}
{/template}

我一直在读这个,但它不是很有帮助。谢谢

4

1 回答 1

5
{template .modal}
   {$html_content |noAutoescape}
{/template}

将打印您的 HTML。但考虑到|noAutoescape不鼓励在模板中使用。

不鼓励:当内容安全的断言远离它的创建位置时,很容易意外引入 XSS 攻击。取而代之的是,将内容包装为经过消毒的内容,并在其创建处轻松展示安全性。
谷歌关闭模板函数和打印指令


或者,如果您确定$html_contentHTML 是“安全的”,您可以在将参数传递给模板的地方指定它:

goog.require('soydata.VERY_UNSAFE');
goog.require('template.namespace');

var container = document.getElementById('modal');
var html = '<strong>HTML you trust!</strong>';

container.innerHTML = template.namespace.modal({
  html_content: soydata.VERY_UNSAFE.ordainSanitizedHtml(html);
});

然后您的初始模板将按原样打印 HTML:

/**
 * @param html_content HTML markup
 */
{template .modal autoescape="strict" kind="html"}
   {$html_content}
{/template}
于 2015-02-27T11:27:24.023 回答