Aide:Erreurs Lint/Contournement de l’anomalie de délimitation de paragraphe
Sur la plupart des wikis, on dirait que le plus grand générateur de ces avertissements linter sont les modèles nowrap et nowrap begin. La solution la plus simple qui règlera la grande majorité de ces cas de linter est d'ajouter une nouvelle ligne avant l'ouverture de la balise <span> dans le source de ces modèles.Le texte d'aide sur cette page se rapporte à Tidy qui n'est plus utilisé sur la grappe Wikimedia. Il a été remplacé par RemexHtml en juillet 2018. |
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>