Jump to content

Aide:Erreurs Lint/Contournement de l’anomalie de délimitation de paragraphe

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

La catégorie pwrap-bug-workaround de linter a été ajoutée pour aider les éditeurs à corriger le wikicode et les modèles afin de s'assurer que leurs pages sont rendues correctement avec un outil basé sur HTML5 comme RemexHTML (qui est prévu pour remplacer Tidy) et Parsoid. En particulier ceci est lié à un bogue dans le repli des paragraphes de l'analyseur syntaxique PHP. Cela impacte les balises ‎<span>, ‎<sub>, ‎<sup> qui se trouvent sur la même ligne qu'une balise de bloc (html4) et qui ont également une propriété CSS white-space:nowrap;.

Pour tous les scénarios identifiés par cette catégorie de linter, nous recommandons d'ajouter un passage à la ligne avant les balises span, sub, sup pour s'assurer que le rendu de la page est préservé lorsque Tidy est remplacé par RemexHTML.

Explications

Le wikicode suivant :

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

génère le HTML suivant dans (analyseur PHP + RemexHTML) et Parsoid :

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

mais génère le HTML suivant dans (analyseur PHP + Tidy)

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

Notez comment la balise p enveloppe la balise span avec Tidy et comment la balise span enveloppe la balise p avec RemexHTML. Normalement cela n'est pas un probleme (sauf pour la conformité de la sortie HTML5 mais c'est un autre sujet). Cependant, lorsque la balise span a la propriété CSS white-space:nowrap, l'enveloppe span autour de la balise p peut changer à tord le rendu lorsque le paragraphe a beaucoup de contenu. Cela conduit à une longue ligne horizontale non repliée. Cela semble être le cas avec, par exemple, les boîtes de navigation.

Il n'est pas facile de corriger le bogue sous-jascent (T134469) et nous continuons à nous y intéresser. Néanmoins il existe un contournement simple du wikicode pour ce bogue qui consiste à introduire un passage à la ligne avant la balise span de sorte à ce qu'elle ne se trouve pas sur la même ligne qu'une balise de bloc comme div.

Le wikicode corrigé serait alors :

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