Rya*_*yan 8 javascript mustache
我正在用户输入创建注释,并在用户单击"提交"后使用Mustache.js呈现它们.我意识到我可以替换用户输入换行符(\n)<br/>以呈现为HTML中断,例如
myString.replace(/\n/g, '<br />');
我意识到我可以通过使用三个括号使Mustache不能逃脱HTML
{{{myString}}}
但是,我想要逃避所有用户HTML,因为Mustache通常会使用双括号{{ ... }},但允许换行符除外<br/>
做这个的最好方式是什么?我可以在渲染后替换换行符,但这似乎是一个非常低效的解决方案,而且我认为必须有更好的方法.
Mat*_*sch 12
选项1 - 使用预标签:
实际上,最好(或有效)将文本包装在<pre></pre>标签中,这将保留文本中的空白区域.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre
并启用自动换行
如何在预标记中包装文本? - http://jsfiddle.net/X5ZY7/
选项2 - 将字符串拆分为行,并使用小胡子:
comment = userComment.split("\n")
{{#comment}}
    {{comment}}<br/>
{{/comment}}
选项3 - 在注入标记之前,使用您喜欢的方法手动转义字符串
:
var div = document.createElement("div")
div.textContent = comment
comment = div.innerHTML.replace(/\n/g, "<br/>")
{{{comment}}}
| 归档时间: | 
 | 
| 查看次数: | 6047 次 | 
| 最近记录: |