如何在标签中放入一些HTML而不转义它?或者我使用的是不正确的标签?
P.S。我无法逃避HTML,它是由服务器生成的。
答案 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>
<‍div>Hello<‍/div>
</pre>
打印出来:
<div>Hello</div>
零宽度木匠= ‍
答案 2 :(得分:0)
您需要对HTML进行转义,就像这样:
您可以使用无需编译即可转义和打印的HTML实体。
< // will print <
> // will print >
使用这两个,您可以打印任何HTML元素。
<div> // will print <div>
要解决您的特定问题,您将需要解析HTML字符串并将人字形转换为这些实体。