如何在<code> / <pre>标记中按字面显示<div>标记?


76

我在<code>标签内使用标签<pre>在我的博客博客上显示代码。不幸的是,它不适用于HTML标签。有没有办法在实际上不将其解释为HTML的情况下<div>在其内部<pre><code>标记中显示“ ” ?我现在正在做的是:

<pre>
 <code>
 .class {        
   color:red;
 }
 // I would like HTML code inside this
 </code>
</pre>

对于HTML以外的所有内容都可以正常工作。任何想法如何实现这一目标?谢谢。



1
您真正想要的是一个<![CDATA[]]>部分;等待浏览器作者赶上1988年之间添加kewl footchers的好运。
Toby Speight 2015年

Answers:


96

不幸的是,它不适用于HTML标签。

<code>表示“这是代码”,<pre>表示“此标记中的空白很重要”。两者均不表示“不应将此元素的内容视为HTML”,因此即使它们不表示您想要的含义,它们也可以正常工作。

有没有办法在实际上不将其解释为HTML的情况下<div>在其内部<pre><code>标记中显示“ ” ?

如果你想呈现一个<角色,然后使用&lt;,以&gt;用于>&amp;&

您(在现代HTML中)不能编写标记并将其解释为文本。


7
谢谢。我现在正在使用此工具来转义HTML字符:htmlescape.net/htmlescape_tool.html
Loolooii,2012年

2
@XedinUnknown —在这里它说您不应引用该文档。如果您是对的,那么地球上的每个浏览器都不符合标准。你看起来不太对劲。该规范描述了前置元素的内容模型,并且可以包含元素。与只能包含文本的textarea进行比较。
昆汀2015年

50

似乎只读的textarea几乎可以满足您的要求。

<textarea readonly> <!-- html code --> </textarea>

10
我想澄清一下为什么这被否决了。textarea标记允许使用文字HTML代码。当我遇到这个问题时,我只是碰巧用它来显示文字HTML,与仅使用textarea相比,答案似乎相当复杂。
杰森·威尔金斯

24

您可以使用“ xmp”元素。在<xmp></xmp>年初以来一直在HTML中,为所有浏览器都支持。即使不应该使用它,它也得到广泛支持。

内部的所有内容<xmp></xmp>都照原样进行(在那里没有识别标记lke标签或字符引用),但出于明显的原因,元素本身的结束标签除外。

否则,“ xmp”呈现为“ pre”。


2
该标签已过时。
Usman Ahmed'2

@UsmanAhmed尽其所能-xmp嵌入之类的好东西正在使用markdown
-StephenBoesch

1
xmp可能已弃用,但至今仍支持HTML规范(这是所有主要浏览器都支持的原因)。我以为它永远不会被完全弃用,因为它是同类标签中的唯一,并且与被认为已弃用时相比,如今已被广泛使用。
Nate I

两年后仍可在Chrome中使用,感谢您解决了我的问题的答案。
Dave S

16

尝试:

<xmp></xmp>

举个例子:

<pre>
     <xmp><!-- your html code --></xmp>
</pre>

再见


效果很好,但是根据文档,它已经过时了……太糟糕了,因为它很棒:-D
ssougnez

2
罗兰(Roland)一年前也给出了相同的答案,但有更多细节,因此这是重复的。
戴夫S


1

只需使用一点点javascript就可以轻松实现。

document.querySelectorAll("code").forEach(el => el.innerText = el.innerHTML);

运行下面的代码片段以查看其运行情况:

document.querySelectorAll("code").forEach(el => el.innerText = el.innerHTML);
pre {
  padding: 1rem;
  background-color: #eee;
  border-radius: 0.25rem;
}
<pre>
  <code>
   .class {        
     color:red;
   }
   
   // I would like HTML code inside this
   <h1>Hello this is a heading</h1>
  </code>
</pre>


0

尝试CodeMirror(https://codemirror.net/

这是一个轻量级的库,可为HTML中的代码设置样式。这是我所指的屏幕截图:

在此处输入图片说明

为我们做好了!


0

也许不是最佳答案,但是您可以执行以下操作:

<p><<input type="hidden">h1<input type="hidden">><input type="hidden">This code is 
displayed!<input type="hidden"><<input type="hidden">/h1<input type="hidden">></p>

<p><<input type="hidden">h1<input type="hidden">><input type="hidden">This code is displayed!<input type="hidden"><<input type="hidden">/h1<input type="hidden">></p>



-4

是的,带有转义xml函数。不过,您需要启用jQuery才能使其正常工作。

<pre>
  ${fn:escapeXml('
    <!-- all your code -->
  ')};
</pre>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.