附加CDATA标记时编码的HTML标记

时间:2013-01-08 15:38:18

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

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

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

当我将其分配给div的html时,实际显示testing html]]>,因为最后>被转换为&gt;。任何想法如何克服这个问题

提前致谢

2 个答案:

答案 0 :(得分:3)

CDATA用于XML文件。这意味着里面的内容被视为文本。 jQuery的.html()<![CDATA[<h变为<!--[CDATA[<h-->,这是一条评论。然后它会忽略关闭</h>标记,因为缺少开头标记。因此,它会显示testing html]]>

如果您想将HTML显示为文字,请使用.text()代替.html()。它会为你逃避它,因此它不会被浏览器解析。

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

编辑:您说您希望解析HTML ,然后使用.html

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

在任何一种情况下都需要CDATA 而不是

答案 1 :(得分:-1)

试试这个:

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