Jump to content

帮助:Lint错误/pwrap错误解决方法

From mediawiki.org
This page is a translated version of the page Help:Lint errors/pwrap-bug-workaround and the translation is 100% complete.

添加此linter类别是为了帮助编辑人员修复维基文本和模板,以确保他们的页面能够使用基于HTML5的工具(例如RemexHTML 计划取代Tidy)和Parsoid)正确呈现。 具体来说,这与PHP解析器中的一个段落换行错误有关。 它会影响与(html4)块标签出现在同一行且具有white-space:nowrap;CSS属性的‎<span>, ‎<sub>, ‎<sup>标签。

对于此linter类别识别的所有场景,我们建议在span/sub/sup标签前添加换行符,以确保在将Tidy替换为RemexHTML时页面渲染得以保留。

说明

以下为维基文本:

<div><span style='white-space:nowrap'>
foo
</span>
</div>

使用(PHP-parser + RemexHTML)和Parsoid生成以下HTML:

<div><span style='white-space:nowrap'>
<p>foo</p>
</span>
</div>

但在(PHP解析器 + Tidy)中会生成以下HTML:

<div>
<p><span style='white-space:nowrap'>foo</span></p>
</div>

请注意p标签如何用Tidy包裹span标签,以及span标签如何用RemexHTML包裹p标签。 通常情况下,这不是问题(除了HTML5输出合规性,这是另一回事)。 但是,当span标签具有white-space:nowrap CSS属性时,当段落内容很多时,围绕p标签的span包装器可能会以不良的方式改变渲染效果。 它导致出现一条没有换行的长水平线。 例如,导航框似乎就是这种情况。

修复根本错误(T134469)并非易事(我们仍在考虑这个问题)。 不过,有一个简单的维基文本解决方法可以解决这个错误,那就是在span标签前插入一个换行符,这样它就不会与div等块标签在同一行。

因此,修正后的维基文本如下所示:

<div>
<span style='white-space:nowrap'>
foo
</span>
</div>