有几种方法可以考虑这个问题。为自己决定哪个对你最有用......
目标:一个逃脱<
的类,允许该类包含文本&lt; html&gt;,&lt; body&gt;,&lt; head&gt;,&lt; script&gt;,&lt; style&gt;,&lt; body&gt;,以及不属于&lt; body&gt;内的任何其他标签或者是专门处理的,没有专门处理它们。
&LT; XMP&GT;实现了这一点(实际上仍然是 - 已弃用但仍支持浏览器):<xmp><body></xmp>
与<body>
类似。 SO的降价处理器在内联代码中实现了这个:显示<body>
只需编写`&lt; body&gt;`(它本身就是\`&amp; lt; body&gt; \`而不能包含在SO代码块中......我不是唯一一个可以使用它的人;)
我的解决方案到目前为止 - 用<
替换所有<
- 负责处理不太特殊的HTML标记(这些内部&lt; body&gt;静态内容标记是否有名称?&lt; div&gt;,&lt; code&gt;,&lt; span&gt;等),但“特殊”标签仍然必须以&amp; lt;而不是&lt;
Javascript:
xmps = document.getElementsByClassName('xmp');
for (var i = 0; i < xmps.length; i++) {
var xmp = xmp.item(i);
var newhtml = xmp.innerHTML.replace(/\>/g,"\>").replace(/\</g,"\<");
xmp.innerHTML = newhtml;
}
我可以写<div class="xmp"><body></div>
。
允许什么
<div class="xmp"><body></div>
?
或者怎么样?
<div class="xmp">
<body>
&/div>
</div>
我的项目的详细信息可能很重要:class="xmp"
中会有标记,因此我们需要注意行初始>
。没有用户输入,因此安全性不是(?)问题。我希望有一个不使用jQuery的解决方案。
答案 0 :(得分:0)
您无法使用JavaScript创建xmp
的功能,因为该功能与HTML解析有关。当JavaScript可以使用它时,浏览器已经解析了该元素。
另一方面,我认为没有必要。据我所知,所有浏览器都支持xmp
,HTML5 CR要求保留支持,新浏览器也要实现它。它还说作者不得使用它,但这并不意味着xmp
不起作用。