在<pre> tag?</pre>内添加一些HTML

时间:2011-02-20 22:17:20

标签: html

如何在标签中放入一些HTML而不转义它?或者我使用的是不正确的标签?

P.S。我无法逃避HTML,它是由服务器生成的。

3 个答案:

答案 0 :(得分:11)

如果您无法控制发出的HTML,您仍然可以在客户端对其进行编码。

以下是使用jQuery库转义<pre>标记内所有标记的方法:

$(function() {
    var pre = $('pre');
    pre.html(htmlEncode(pre.html()));
});

function htmlEncode(value){ 
  return $('<div/>').text(value).html(); 
} 

编辑:根据要求,不使用jQuery的相同代码:

function encodePreElements() {
    var pre = document.getElementsByTagName('pre');
    for(var i = 0; i < pre.length; i++) {
        var encoded = htmlEncode(pre[i].innerHTML);
        pre[i].innerHTML = encoded;
    }
};

function htmlEncode(value) {
   var div = document.createElement('div');
   var text = document.createTextNode(value);
   div.appendChild(text);
   return div.innerHTML;
}

在加载DOM后运行encodePreElements

<body onLoad='encodePreElements()'>
    <pre>Foo <b>bar</b></pre>
</body>

答案 1 :(得分:8)

此:

    <pre>
      <&zwj;div>Hello<&zwj;/div>
    </pre>

打印出来:

<div>Hello</div>

零宽度木匠= &zwj;

答案 2 :(得分:0)

需要对HTML进行转义,就像这样:

您可以使用无需编译即可转义和打印的HTML实体。

&#60; // will print <
&#62; // will print >

使用这两个,您可以打印任何HTML元素。

&#60;div&#62; // will print <div>

要解决您的特定问题,您将需要解析HTML字符串并将人字形转换为这些实体。