26

有什么方法可以在不解析的情况下显示 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 标签将解析代码。

4

9 回答 9

32

您可以使用script带有 set 的元素type来表示纯文本,并将其display属性设置为block. 这只会影响解析行为:除了元素本身的结束标签外,不会识别任何标记(标签或实体或字符引用)</script>。(因此,它与识别标签的位置不完全相同。您可以单独使空白处理类似于和/或默认情况下将字体设置为等宽字体。xmp</xmp>xmppre

例子:

<style>
    script {
        display: block;
    }
</style>

然后在文档正文中:

<script type="text/plain">
    <i>&eacute;</i>
</script>

在最新版本的 IE、Chrome、Firefox、Opera 上测试。在 IE 9 上的 IE 8 和 IE 7 仿真中不起作用,但这可能是仿真中的一个错误。

但是,我不明白您为什么要使用 this 而不是xmp,它并没有停止工作。它不在规格中,但如果你担心这一点,你应该一直担心。在 HTML 2.0(有史以来第一个 HTML 规范)中提到可以避免,但在 HTML 3.2 中已弃用,并在 HTML 4.0 中完全删除(很久以前:1997 年)。

xmp正在卷土重来而不是死去。W3C HTML5(W3C 工作人员将其描述为当前的 HTML 规范)声明xmp为已过时且不符合标准,但它也对浏览器提出了要求:“用户代理必须以在语义和目的方面xmp等同于元素的方式对待元素pre的渲染。(尽管解析器对这个元素有特殊的行为。)”因此,旧的解析行为不是明确要求的,而是明确暗示的。

于 2012-08-01T04:22:16.530 回答
5

我个人认为使用<code> </code>标签只能在 Dream Weaver 中使用,并且标签<xmp> </xmp>永远不会停止工作,除非你把</xmp>它放进去可以正常工作。使用<textarea> </textarea>使得其他人可以在网站或页面上编辑您的代码,因此我建议<xmp> </xmp>仍然使用该标签并且该标签仍然存在。

于 2012-09-16T09:50:49.237 回答
4

现代方法是使用带有(布尔)属性的 textarea 只读。您可以使用 XMP,但这已被弃用,因此最终可能会停止支持。
例子:

<textarea readonly='true'>
    <p>This is some text</p>
</textarea>
于 2014-01-06T01:15:17.557 回答
2

然后......几年过去了,我在将我的博客从 wordpress 转换为由 lambda 和 dynamodb 支持的 vuejs spa 时遇到了同样的问题。

答案是;至少在我的情况下。逃离实体。

&lt;变成&amp;lt;

&gt;变成&amp;gt;

等等等等

希望这可以帮助。

于 2018-12-27T04:49:05.517 回答
1

没有。

理论上你可以使用 CDATA 块,但没有浏览器支持 text/html 模式。

使用字符引用。

于 2012-07-26T16:42:57.957 回答
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在这里

于 2013-11-14T00:55:27.477 回答
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>"
于 2016-01-03T03:02:57.800 回答
-1

从技术上讲,您可以使用,但它要求您尝试显示的代码中<textarea>没有标签。</textarea>只是更容易逃脱<.

于 2012-07-26T16:40:42.503 回答
-1

好吧,一种方法是使用 jQuery。jQuery .text() 方法将对特殊字符进行编码。如果您查看源代码,原始未编码的文本将保留。

<div id="text">
    <a href="">This is an anchor</a>
</div>

<script>
    var t = $('#text'); t.html(t.text());
</script>
于 2012-07-26T16:49:07.503 回答