有没有办法在不解析的情况下显示HTML标签?像XMP
之类的标签在完美之前起作用,但现在它被PRE
取代并不是那么酷。看一下这个例子:
//This used to NOT PARSE HTML even if you used standard < and >.
<XMP>
<a hred="http://example.com">Link</a>
</XMP>
//New PRE tag requires < and > as replacement for < and >.
<PRE>
<a href="http://example.com">Link</A>
</PRE>
我正在寻找的东西相当于旧的XMP标签。新的PRE标签将解析代码。
答案 0 :(得分:24)
您可以使用设置了script
的{{1}}元素来表示纯文本,并将其type
属性设置为display
。这仅影响解析行为:除了元素本身的结束标记block
之外,不识别标记(标记或实体或字符引用)。 (因此,完全与</script>
相同,其中识别的标记为xmp
。)您可以单独进行类似于</xmp>
的空格处理和xmp
和/或默认情况下将字体设置为这些元素中的等宽字体。
示例:
pre
然后在文件正文中:
<style>
script {
display: block;
}
</style>
测试了最新版本的IE,Chrome,Firefox,Opera。在IE 9上没有在IE 8和IE 7模拟中工作,但这可能是仿真中的一个错误。
但是,我不明白你为什么要使用它而不是<script type="text/plain">
<i>é</i>
</script>
,它还没有停止工作。这不符合规格,但如果你担心这一点,你应该一直担心。在HTML 2.0(有史以来第一个HTML规范)中提到它是可以避免的,它在HTML 3.2中被弃用并在HTML 4.0中被完全删除(很久以前:在1997年)。
xmp
正在卷土重来而不是死亡。 W3C HTML5(由W3C工作人员描述为当前的HTML规范)声明xmp
已过时且不符合要求,但它也在浏览器上强加了requirement:“用户代理必须处理xmp
在语义和渲染方面,元素以等同于xmp
元素的方式。 (解析器虽然对此元素有特殊行为。)“因此,未明确要求旧的解析行为,但明确暗示。
答案 1 :(得分:4)
Hey Guys我个人认为使用<code> </code>
标签只适用于Dream Weaver和
标记<xmp> </xmp>
从未停止工作,除非您输入</xmp>
它正常工作。使用<textarea> </textarea>
可以让其他人在网站或网页上修改您的代码,因此我建议仍然使用代码<xmp> </xmp>
并且该代码仍然存在。
答案 2 :(得分:1)
没有。
理论上你可以使用CDATA块,但没有浏览器支持text / html模式。
使用字符引用。
答案 3 :(得分:1)
如果你想变得更复杂,另一种方法是使用jQuery创建自定义标签。对于此示例,我使用了<noparse>
。
$('noparse').each(function(){
if($(this).attr('tagchecked') != 'true'){ //checks if already changed tag
$(this).text($(this).html()).attr('tagchecked', 'true'); //makes the html into plaintext
}
});
JSFiddle here
答案 4 :(得分:1)
现代的方法是使用textarea和(boolean)属性readonly。您可以使用XMP,但这已被弃用,因此最终可能会停止受支持。
例如:
<textarea readonly='true'>
<p>This is some text</p>
</textarea>
答案 5 :(得分:1)
然后...几年过去了,将博客从wordpress转换为由lambda和dynamodb支持的vuejs spa时,我遇到了同样的问题。
答案是;至少在我的情况下。转义该实体。
<
变为&lt;
>
变为&gt;
等等
希望这会有所帮助。
答案 6 :(得分:0)
我建议使用html iframe标记并将您喜欢的文本显示在src属性中。你只需要首先对url或base64进行编码。
example (urlencoded):
<iframe src="data:text/plain,%22%3Chello%3E%22"></iframe>
example (base64):
<iframe src="data:text/plain;base64,IjxoZWxsbz4i"></iframe>
Result displayed as:
"<hello>"
答案 7 :(得分:-1)
从技术上讲,您可以使用<textarea>
,但这需要您尝试显示的代码中没有</textarea>
标记。它更容易逃脱<
。
答案 8 :(得分:-1)
好吧,一种方法是使用jQuery。 jQuery .text()方法将编码特殊字符。如果您查看来源,原始的未编码文本将保留。
<div id="text">
<a href="">This is an anchor</a>
</div>
<script>
var t = $('#text'); t.html(t.text());
</script>