HTML不会呈现代码块

时间:2014-04-10 20:07:51

标签: javascript jquery html syntax-highlighting google-code-prettify

所以我使用Google代码美化了AnchorCMS。所有其他语言 HTML工作。这就是我尝试使用的内容。

<pre class="prettyprint lang-html">
<!DOCTYPE html>
</pre>

但我认为编辑器正在解释<pre>标签中的HTML,以及它无法正常工作的原因。 Here's当我尝试显示上述代码时会发生什么。我使用了<pre class="prettyprint lang-js">的{​​{3}}示例。我现在不确定该怎么做。有任何想法吗?也很抱歉直接链接到我的网站。我不能在JSFiddle上显示它

7 个答案:

答案 0 :(得分:11)

<pre>标记的内容需要采用HTML编码。

您不需要使用<>"&字符,而是需要使用其编码对应字符:

  • <变为&lt;
  • >变为&gt;
  • "变为&quot;
  • &变为&amp;

答案 1 :(得分:0)

尝试

$('.prettyprint').text('<!DOCTYPE html>');

document.querySelector('.prettyprint').innerText('<!DOCTYPE html>');

这会自动为浏览器编码html实体

如果您使用像PHP这样的服务器端脚本语言,最好在服务器上对其进行编码:

<强> PHP:

<pre class="prettyprint lang-html">
   <?=htmlspecialchars('<!DOCTYPE html>');?>
</pre>

答案 2 :(得分:0)

必须在服务器上处理。我猜你有一个带插件的CMS系统。 (看起来你可能正在使用WP。)

然后尝试一个代码漂亮的插件。这样的插件可以为你处理。

如果它不起作用,请询问插件作者他/她是否想要修复它。

答案 3 :(得分:0)

而是使用以下HTML标记:

<xmp >
    <!doctype html>
</xmp>

确定它会起作用。

答案 4 :(得分:0)

<pre class="prettyprint lang-html">&lt;!DOCTYPE html&gt;</pre>在我的浏览器(Chrome)中显示<!DOCTYPE html>。这是您的页面源代码是atm

<pre class="lang-html">
     <!DOCTYPE html>
</pre>

页面可能未更新?

答案 5 :(得分:0)

您有一些格式错误的HTML,可能导致某些元素无法按要求呈现。

enter image description here

此外,来源的来源 - 数据库?,如果您从数据库中获取原始数据(使用Navicat或其他非基于Web的工具),并将其粘贴到数据库中,您是否可以准确粘贴它的样子? Windows记事本(确切存储的内容......可能必须通过在线编码器运行才能看到)

答案 6 :(得分:0)

@zzzzBov是对的,浏览器要求您要显示的标记中的实体被编码。

但根据Chromes的源代码视图,您的CMS似乎可能在输出时自动再次取消标记:

enter image description here

在具有相同问题的人的this bug report中,维护者建议使用自定义主题函数来解决此问题:

  

在版本0.9和1.0中,帖子和页面的内容不会更改   保存到数据库时,如果输入文本等html代码   它将呈现为html,如果你想要html编码,你将不得不   输入它编码为&lt; b&gt; text&lt; / b&gt;。

     

要解决此问题,您可以在主题中使用自定义功能   functions.php文件可以完全按照您的喜好处理内容。

function mytheme_article_content() {
    // if you just want the raw content you saved
    return Registry::prop('article', 'html');

    // if you want the content to be parsed with markdown
    $md = new Markdown;
    return $md->transform(Registry::prop('article', 'html'));

    // if you want to encode any html in you posts
    return htmlentities(Registry::prop('article', 'html'), ENT_NOQUOTES, Config::app('encoding'));
}
     

因此,您可以选择一些选项来获得所需的输出。在你的   模板只需用mytheme_article_content替换article_html。

我会下注最后一行(return htmlentities ...)可能是您要查找的版本,因此请尝试删除上面的两行,以return开头并调用{{1在维护者建议的模板文件中。