HTML标题带换行符 -> 没有标题,预览和渲染帖子之间不一致

您好,我从另一个论坛软件导入了一些带有换行符的标题帖子。这些在帖子预览中显示正确,但在最终的帖子中却无法渲染为标题。我在昨天更新的论坛以及 Discourse Meta 上都遇到了这个问题:


标题带换行符的测试

普通段落。

无换行符的标题


它将 <h2> 留空,并将后面的文本包装在 <p> 中:

<h2 dir="ltr">
</h2><p dir="ltr">标题带换行符的测试</p>

我99%确定这是一个最近的回归错误,因为在迁移过程中,我特意检查了同一用户导入的帖子的标题,用户和我自己都记得它们当时是正确渲染的。

2 个赞

嗯,考虑到那里的 LTR 内容,@Osama 这会不会与我们最近添加的 CSS 翻转器有关?

2 个赞

我不这么认为,因为帖子的最终/已处理 HTML 是错误的,而 CSS 翻转器(无论是旧的还是新的)根本不参与帖子的处理过程。

^ <p> 中的文本应该在 <h2> 中,而且我认为根本不应该有 <p>

6 个赞

这似乎发生在烹饪过程中,特别是 markdown 解析。

将带有换行的标题传递给 PrettyText.markdown 会返回用 p 标签包裹的标题内容。

然后,在清理过程中,段落会从标题标签中提取出来,导致如下结果:

我猜这是因为标题中的段落不符合规范?

我仍在审查 markdown 解析器代码,以找出内容最初被包裹在 p 标签中的原因。

2 个赞

这与以下内容高度相关:

我可以等几周 Loofah 发布。

我会发推特给 Mike 提及此事。

2 个赞

你好,感谢你对此进行调查。HTML 不关心换行符,所以从技术上讲,这是正确的:

<h2>

带换行的标题测试

</h2>

这似乎只是 Markdown 解析器在 HTML 解析器之后/内部运行的问题,它为换行符生成了 <p> 标签。

1 个赞

嘿,我们已经通过以下方式修复了这个问题:

正如在这里看到的:

带换行的标题测试

普通段落。

带换行的标题


8 个赞

很高兴听到这个消息,谢谢你,@nat!这需要重新烘焙帖子吗?

2 个赞

是的,这需要重新烘焙 — 我们无法在此修复中自动为您执行此操作,因为这是一项耗时的操作。

3 个赞

此主题已在 2 天后自动关闭。不再允许回复。