Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js只允许换行,转义其他HTML_Javascript_Mustache - Fatal编程技术网

Javascript js只允许换行,转义其他HTML

Javascript js只允许换行,转义其他HTML,javascript,mustache,Javascript,Mustache,我通过用户输入创建评论,并在用户单击“提交”后使用Mustache.js呈现它们。我意识到我可以用替换用户输入的换行符(\n),以呈现为HTML换行符,例如 myString.replace(/\n/g,) 我意识到我可以通过使用三个括号使小胡子不脱离HTML {{{myString}}} 但是,我想转义所有用户HTML,因为小胡子通常使用双大括号{{…}},但允许使用换行除外 最好的方法是什么?我可以在渲染后替换换行符,但这似乎是一个非常低效的解决方案,我认为必须有更好的方法。选项1-使用预标

我通过用户输入创建评论,并在用户单击“提交”后使用Mustache.js呈现它们。我意识到我可以用

替换用户输入的换行符(
\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}}}
那样呈现吗?但还是不换行。。。