【问题标题】:HTML tags encoded when appending CDATA tag附加 CDATA 标记时编码的 HTML 标记
【发布时间】:2013-01-08 15:38:18
【问题描述】:

在我的页面中有一个 div,我必须在其中显示来自 javascript 的 html。所以在 javascript 中,我附加了 CDATA 标记,以便将 html 显示为数据。以下是我使用的代码

var htmlCode = '<h>testing html</h>';
htmlCode = '<![CDATA[' + htmlCode+ ']]>';
$('myDiv').html(htmlCode);

这实际上显示testing html]]&gt;,因为当我将它分配给div 的html 时,最后一个&amp;gt; 被转换为&amp;gt;。知道如何克服这个问题

提前致谢

【问题讨论】:

  • 是的,现在的问题是什么? last '>' 转换为 > when... 所以呢?
  • @SathyeshSelvarajah:问题的格式不正确。
  • 人们只是发布问题,甚至没有检查它是如何呈现的。无论如何,感谢@RocketHazmat 的编辑!

标签: jquery encoding html-parsing cdata html-encode


【解决方案1】:

CDATA 用于 XML 文件。这意味着里面的内容被视为文本。 jQuery 的.html() 将&lt;![CDATA[&lt;h 变成&lt;!--[CDATA[&lt;h--&gt;,这是一个注释。然后它会忽略结束 &lt;/h&gt; 标记,因为缺少开始标记。所以,它显示testing html]]&gt;。

如果您想将 HTML 显示为文本,只需使用 .text() 而不是 .html()。它会为你转义,这样浏览器就不会解析它。

var htmlCode = '<h>testing html</h>';
$('#myDiv').text(htmlCode);

编辑:你说你希望HTML 被解析,那么就使用.html。

var htmlCode = '<h>testing html</h>';
$('#myDiv').text(htmlCode);

CDATA 在这两种情况下都不需要。

【讨论】:

  • 在 div 中我想显示 html 而不是 html 的文本。它应该显示“testing html”而不是“testing html
  • @Ankit:那就做.html(htmlCode)。你不需要CDATA,不知道你为什么有这个。
  • @Hazmat: htmlCode 可能不是很好的 html 格式,所以我需要把它作为 CDATA
  • @Ankit:CDATA 仅适用于 (X)HTML 文件本身,而不是在文件被解析为 DOM 之后。
  • @Hazmat:使用 CDATA,因为 html 可能无法很好地解析。用户在文本框中输入 html,然后单击按钮,我必须在 div 中将其显示为 html。
猜你喜欢
  • 1970-01-01
  • 2013-05-17
  • 2011-04-08
  • 1970-01-01
  • 2019-08-13
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多