我如何看待在评论中发布 HTML 的方式

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费积分!

人们在这个网站的文章评论中发布了很多 HTML 代码。他们试图演示某些内容、寻求故障排除帮助、展示替代技术等。这非常好。我尽可能地鼓励这种行为。不幸的是,人们经常对如何正确地做到这一点感到困惑,并在结果出错时感到沮丧。

我必须在评论区发布说明,以教人们本网站的最佳方法

  • 您可以使用基本的 HTML
  • 发布代码时,请将所有 < 字符转换为 &lt;
  • 如果代码是多行的,请使用 <pre><code></code></pre>

理想情况下,我希望完全摆脱所有这些说明,并让一切都“正常工作”。以下两个更改将使本网站评论的理想状态更加接近

1. 任何不是“允许的标签”之一的 HTML 都将被转义。

WordPress 具有此默认允许的标签集

<a href="" title="">
<abbr title="">
<acronym title="">
<b>
<blockquote cite="">
<cite>
<code>
<del datetime="">
<em>
<i>
<q cite="">
<strike>
<strong>

如果有人在评论中使用这些标签,它们将应用于该文本并适当地呈现。如果他们使用任何其他标签,则应将其转义,而不是被删除或不适当地呈现。所以

我也想说,如果这是一行代码,如本例所示(不包含换行符),则应将新转义的代码包装在<code></code>标签中。

此外,如果代码已被转义,例如 &lt;span&gt;,则将其保留。

2. 确保多行代码用 <pre> 标签包裹

如果有人输出多行代码(无论是将其放在 <code> 标签中,还是它不是允许的标签,因此它自动转义并自动代码包装),则该多行代码应包装在 <pre></pre> 标签中。

这还应该去除代码块开头和结尾的空格,因此不会呈现额外的空格。这个

<pre><code>
<ul>
  <li>

应该变成

<pre><code><ul>
  </li><code></pre>

这将是评论者自己使用标签还是根据上述规则自动生成。

CMS 独立

我在这里特别想到的是 WordPress,因为我一直都在使用它,但我可以想象这在任何允许部分但不是全部 HTML 标签的评论环境中都很有用,并且讨论可能涉及讨论 HTML 的极客是合理的。嘿,也许这应该是一个 WordPress 插件,对吧?眨眼眨眼。