8

所以我在 AnchorCMS 中使用 Google 代码美化。HTML外的所有其他语言都可以使用。这就是我正在尝试使用的。

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

但我认为编辑器正在解释标签中的 HTML <pre>,这就是它不起作用的原因。这是我尝试显示上述代码时发生的情况。还有这个我用过<pre class="prettyprint lang-js">例子。我不确定现在该怎么做。有任何想法吗?也很抱歉直接链接到我的网站。我无法在 JSFiddle 上展示它

4

7 回答 7

11

标记的内容<pre>需要进行 HTML 编码。

您需要使用它们的编码对应项,而不是使用<>"和字符:&

  • <变成&lt;
  • >变成&gt;
  • "变成&quot;
  • &变成&amp;
于 2014-04-10T20:09:52.003 回答
0

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

在此处输入图像描述

此外,来源来自哪里——一个数据库?,如果你从数据库中获取原始数据(使用 Navicat 或其他非基于 Web 的工具)并将其粘贴到 Windows 记事本中,你能否准确粘贴它的样子(究竟存储了什么..可能需要通过在线编码器运行才能看到)

于 2014-04-20T04:44:22.187 回答
0

而是使用以下 HTML 标记来执行此操作:

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

肯定会奏效的。

于 2014-04-14T11:12:48.130 回答
0

@zzzzBov 是对的,浏览器需要对要显示的标记中的实体进行编码。

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

在此处输入图像描述

这个来自有同样问题的人的错误报告中,维护者推荐了一个自定义主题函数来解决这个问题:

在 0.9 和 1.0 版本中,帖子和页面的内容在保存到数据库时不会更改,因此如果您输入像文本这样的 html 代码 ,它将被呈现为 html,如果您想要对 html 进行编码,则必须将其输入编码为 < b>文本</b>。

为了解决这个问题,您可以使用主题 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'));
}

所以你有几个选项可以混合使用以获得你想要的输出。在您的模板中,只需将 article_html 替换为 mytheme_article_content。

我敢打赌最后一行 ( return htmlentities...) 可能是您正在寻找的版本,因此请尝试删除它上面的两行,return并按照维护者的建议调用mytheme_article_content您的模板文件。

于 2014-04-20T16:05:10.147 回答
0

尝试

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

或者

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

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

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

PHP:

<pre class="prettyprint lang-html">
   <?=htmlspecialchars('<!DOCTYPE html>');?>
</pre>
于 2014-04-10T20:12:50.180 回答
0

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

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

页面可能没有更新?

于 2014-04-17T17:50:20.823 回答
0

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

然后尝试一个插件来美化代码。这样的插件可以为您处理这个问题。

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

于 2014-04-14T01:49:37.173 回答