Priorité/Gravité :
Moyenne
Plateforme :
Système d’exploitation
- Windows 11
Navigateur
- Google Chrome 139.0.7258.128
Discourse
028c90dd5e7a2799ea5b6e963f71fc0222681943
Description :
Le texte copié à partir de certaines sources peut être stocké dans le presse-papiers sous une forme formatée (type text/html) en plus du texte brut (type text/plain).
Lorsque du texte est collé dans le compositeur, si un type de données formaté est présent dans le presse-papiers, ces données sont utilisées à la place du type texte brut.
Par défaut, les espaces blancs dans le contenu HTML sont réduits. Ce comportement peut être contrôlé via la propriété CSS white-space.
Lors du collage dans le compositeur en mode « éditeur de texte enrichi », la propriété CSS white-space des données du presse-papiers n’est pas respectée. Cela entraîne une réduction systématique des espaces blancs dans le contenu collé. Dans les cas où le contenu source avait une propriété white-space définie sur la valeur pre, le contenu collé devient difficile à lire et incorrect dans les cas où les espaces blancs du contenu source avaient une signification technique.
Étapes reproductibles :
- Créez un fichier HTML avec le contenu suivant :
<html> <body> <span style="white-space: pre">foo bar </span> </body> </html> - Ouvrez le fichier dans votre navigateur web.
Notez que les espaces blancs du contenu de la page ne sont pas réduits :foo bar - Copiez le contenu de la page web.
- Ouvrez le compositeur de publication.
- Mettez le compositeur en mode « éditeur de texte enrichi ».
- Collez le contenu copié.
Au lieu d’avoir le même format que le contenu copié, les espaces blancs du contenu collé ont été réduits :
foo bar
Contexte supplémentaire :
Je constate que ProseMirror prend en charge white-space: pre :
La faute ne se produit pas lors de l’utilisation du compositeur en mode « éditeur Markdown ».
La faute ne se produit pas si le contenu est collé dans un bloc de code au lieu du mode éditeur normal. Il est vrai que dans de nombreux cas, il serait plus approprié de placer le contenu qui utilise quelque chose comme white-space: pre dans un bloc de code. Cependant, il est assez courant que les utilisateurs appliquent un formatage rétroactivement en ajoutant le contenu au compositeur, en sélectionnant le contenu, puis en utilisant la barre d’outils du compositeur pour appliquer le formatage (par opposition à l’approche alternative consistant à déclencher un bloc de code avant d’ajouter le contenu).
J’ai trouvé cet outil utile pour examiner les données brutes du contenu du presse-papiers :
Je suis en mesure de reproduire la faute sur try.discourse.org en « mode sans échec ».
