是否有HTML / CSS方式显示HTML标签而无需解析?

时间:2012-07-26 16:38:27

标签: html css character-encoding special-characters

有没有办法在不解析的情况下显示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 &lt; and &gt; as replacement for < and >.
<PRE>
&#60;a href="http://example.com"&#62;Link&#60;/A&#62;
</PRE>

我正在寻找的东西相当于旧的XMP标签。新的PRE标签将解析代码。

9 个答案:

答案 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>&eacute;</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;变为&amp;lt;

&gt;变为&amp;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>