Handlebarsjs "smart" 转义

Handlebarsjs "smart" escape

有没有什么方法可以为车把转义设置某种设置,从而省略特定的标签? 或者是否有任何一组助手可以做到这一点?

例如如果我允许模板中的链接,它将执行以下操作。

InputSting = "some <\a href='http://link'>out</a> <\script>alert('THERE')</script>"

模板

{{InputString}}

编译成类似的东西:

some out <\script>alert('THERE')</script>

忽略反斜杠,用于保留标签。

我试了一下 fiddle : https://jsfiddle.net/ChristopheThiry/m4fgsxof/

首先,在 InputString 中,您需要进行一些不同的转义,否则 javascript 会检测到您的脚本标签并在错误的位置关闭标签:

\<script>alert('THERE')\<\/script>

其次,您可以使用助手在您的输入字符串上投射 Handlebars.SafeString

在您的模板中:

{{#link InputString}}
{{/link}}

和助手声明:

Handlebars.registerHelper('link', function(text) {
  return new Handlebars.SafeString(text);
});