帮助:Lint错误/pwrap错误解决方法
Appearance
在大多数wiki上,这些linter警告的最大来源似乎是nowrap或nowrap begin模板。 最简单的解决方法是,在这些模板的模板源代码中,在 <span>标签的开头添加一个换行符,这样就可以处理绝大多数的linter问题。本页的帮助文本中提到了Tidy,但Wikimedia集群已不再使用Tidy。 它于2018年7月被RemexHtml取代。 |
添加此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>