Javascript js只允许换行,转义其他HTML
我通过用户输入创建评论,并在用户单击“提交”后使用Mustache.js呈现它们。我意识到我可以用Javascript js只允许换行,转义其他HTML,javascript,mustache,Javascript,Mustache,我通过用户输入创建评论,并在用户单击“提交”后使用Mustache.js呈现它们。我意识到我可以用替换用户输入的换行符(\n),以呈现为HTML换行符,例如 myString.replace(/\n/g,) 我意识到我可以通过使用三个括号使小胡子不脱离HTML {{{myString}}} 但是,我想转义所有用户HTML,因为小胡子通常使用双大括号{{…}},但允许使用换行除外 最好的方法是什么?我可以在渲染后替换换行符,但这似乎是一个非常低效的解决方案,我认为必须有更好的方法。选项1-使用预标
替换用户输入的换行符(\n
),以呈现为HTML换行符,例如
myString.replace(/\n/g,
)代码>
我意识到我可以通过使用三个括号使小胡子不脱离HTML
{{{myString}}}
但是,我想转义所有用户HTML,因为小胡子通常使用双大括号{{…}}
,但允许使用
换行除外
最好的方法是什么?我可以在渲染后替换换行符,但这似乎是一个非常低效的解决方案,我认为必须有更好的方法。选项1-使用预标记:
实际上,最好(或有效)将文本包装在
标记中,这样可以保留文本中的空白
comment = userComment.split("\n")
{{#comment}}
{{comment}}<br/>
{{/comment}}
并启用自动换行
-
选项2-将字符串分成几行,每行留一个小胡子:
var div = document.createElement("div")
div.textContent = comment
comment = div.innerHTML.replace(/\n/g, "<br/>")
{{{comment}}}
comment=userComment.split(“\n”)
{{{#评论}
{{comment}}
{{/评论}
选项3-在注入
标记之前,使用手动转义字符串:
var div=document.createElement(“div”)
div.textContent=注释
comment=div.innerHTML.replace(/\n/g,“
”)
{{{comment}}}
如果要在文本区域中添加换行符,则需要将\n替换为
我真的不想保留所有的空白,而只是换行。我还设置了一个快速测试,但似乎无法让标记实际进行换行(即使是显式设置的),因此文本超出了边界并流向DOM元素。我认为选项2或3更符合我的要求。谢谢你的建议,马特!如果我使用这个text.replace(/\n\r?/g,
;
)),选项2应该是{{{{{}{}{}{{}
{{/comment}}}代码>我应该像{{{{response.data.descriptionParser}}}
那样呈现吗?但还是不换行。。。