gpt4 book ai didi

javascript - ejs 不会在变量中打印新行

转载 作者:行者123 更新时间:2023-12-03 06:09:21 24 4
gpt4 key购买 nike

我有一个 Node.js/MySQL 中的 Web 应用程序,用户可以在其中上传他们的故事。它们写入 HTML 文本区域标记中。现在我正在尝试使用 ejs 从数据库上传到脚本标记,以便我可以进行进一步的“处理”

<script>
var text = "<%=story.Content%>",
result = anchorme.js(text);
document.getElementById('story-content').innerHTML = twemoji.parse(result);
</script>

问题是用户在写入时是否按 Enter 键开始新行。它会在文本变量中给我一个错误,并且不会打印任何内容,那么我该如何解决这个问题?

最佳答案

如果您在页面上查看源代码,以便了解浏览器如何接收它,您将看到类似这样的内容 - 请注意换行符:

    var text = "I am a story over multiple lines
and that's what javascript gets confused about
because it can't figure out where the closing quotes are.

Let's not even go into what could happen when someone uses quotes!"

因此,您实际上只需要一种将故事内容传递给 JavaScript 且不会破坏页面的方法。而不是像这样推出字符串......

var text = "<%=story.Content%>"

...您可以以 JSON 格式将内容传递给 javascript,因为这允许将换行符转义为\r\n 并将引号转义为\"等等。请注意此处使用 <%- 而不是 <%= 因为你不希望它传递转义的 HTML:

var text = <%-JSON.stringify({ content: story.Content })%>.content; 

它将一个带有很好转义字符串的对象传递给您的内联脚本,以便它进行处理。

关于javascript - ejs 不会在变量中打印新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39392835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com