为什么我的"<br />"标签会被转换成"&lt;br /&gt;"?

13

我在数据库中存储了HTML数据,希望按原样显示。但它会将<br />标签转换为&lt;br /&gt;,这不是我想要的行为。我尝试过使用JavaScript的replace方法,但仍然无法将其转换为常规HTML。

    var venueaddress = msg.result[0].venueaddress;
    var venueaddress2 = venueaddress.replace("[newline]", "<br />");

                alert(venueaddress2); //shows <br />


$("#venueaddress").text(venueaddress2); //lets now display it on the browser

<li><h3>Venue Address</h3><p><strong> <span id="venueaddress"></span> </strong></p></li>
然而,在浏览器中呈现时,它有<br />标签,因此没有换行。

3
你能贴出添加HTML到网页中的代码吗? - Senad Meškin
你在将HTML存储到数据库之前进行编码吗?并且你想保留标记的完整性来显示HTML? - James Johnson
请查看此帖子:https://dev59.com/KHM_5IYBdhLWcg3w9oaG - Samich
5个回答

7

您的问题与

$("#venueaddress").text(venueaddress2);

你应该使用

$("#venueaddress").html(venueaddress2);

文本将编码任何HTML字符,并在span中显示它作为编码,HTML不会。


谢谢,我完全没有注意到。 - Strong Like Bull

5

3
您可以将字符替换为实际的<br/>标签。
myString.replace(/&lt;br&gt;/g, '<br/>')

2

可能是因为当您将其插入DOM时,将其作为文本而不是HTML插入。

由于您没有展示用于执行此操作的代码,很难确定或说出改变它以期望HTML的最佳方法是什么。


0

你的 HTML 数据正在进行“转义”。这样可以防止人们通过浏览器向不知情的人发送<script>标签。

解决方法:首先,你需要确定你的问题是一个“bug”还是一个“feature”。

通常情况下,转义 HTML 是件好事。尤其是如果问题仅仅涉及展示方面。

例如,一个解决方法可能是插入换行符而不是使用 br 元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接