Markdown accidentel dans le contenu formaté collé dans l'éditeur de texte enrichi rendu lors de la publication

Priorité/Gravité :

Moyenne

Plateforme :

Système d’exploitation

  • Windows 11

Navigateur

  • Google Chrome 141.0.7390.123

Discourse

fb4bd7951aa6ae8c814df702807c12ccb77bd3fd

Description :

L’"éditeur de texte enrichi" est conçu pour offrir une expérience « WYSIWYG » (ce que vous voyez est ce que vous obtenez), où le contenu affiché dans l’éditeur est rendu exactement tel qu’il apparaîtra dans le message publié.

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 (text/plain).

Lorsque du texte est collé dans l’éditeur, 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.

En raison de la nature minimale de la syntaxe, il est courant que le texte contienne du contenu qui ressemble fortuitement à du balisage Markdown.

:bug: Le message publié est rendu différemment de ce qui est affiché dans l’“éditeur de texte enrichi” lorsque le contenu formaté collé contient un certain balisage Markdown fortuit.

Étapes reproductibles :

Balisage de liste fortuit

  1. Créez un fichier HTML avec le contenu suivant :
    <html>
      <body>
    <br />- foo
      </body>
    </html>
    
  2. Ouvrez le fichier dans votre navigateur web.
  3. Copiez le contenu de la page web.
  4. Ouvrez l’éditeur de messages.
  5. Mettez l’éditeur en mode « éditeur de texte enrichi ».
  6. Collez le contenu copié dans l’éditeur.
    :slightly_smiling_face: Le texte a été collé tel quel, plutôt que d’être rendu sous forme de liste :

    - foo

  7. Publiez le message.

:bug: Au lieu de correspondre à ce qui était vu dans l’éditeur, le contenu a été rendu comme une liste non ordonnée :

  • foo

Balisage de bloc de code fortuit

  1. Créez un fichier HTML avec le contenu suivant :
    <html>
      <body>
        <span style="white-space: pre">    foo</span>
      </body>
    </html>
    
  2. Ouvrez le fichier dans votre navigateur web.
  3. Copiez le contenu de la page web.
  4. Ouvrez l’éditeur de messages.
  5. Mettez l’éditeur en mode « éditeur de texte enrichi ».
  6. Collez le contenu copié dans l’éditeur.
    :slightly_smiling_face: Le texte a été collé tel quel, plutôt que d’être rendu sous forme de bloc de code :

        foo

  7. Publiez le message.

:bug: Au lieu de correspondre à ce qui était vu dans l’éditeur, le contenu a été rendu comme un bloc de code :

foo

Balisage de bloc de code fortuit avec balisage BBCode fortuit

  1. Créez un fichier HTML avec le contenu suivant :
    <html>
      <body>
        <span style="white-space: pre">    [foo]</span>
      </body>
    </html>
    
  2. Ouvrez le fichier dans votre navigateur web.
  3. Copiez le contenu de la page web.
  4. Ouvrez l’éditeur de messages.
  5. Mettez l’éditeur en mode « éditeur de texte enrichi ».
  6. Collez le contenu copié dans l’éditeur.
    :slightly_smiling_face: Le texte a été collé tel quel :

        [foo]

  7. Publiez le message.

:bug: Au lieu de correspondre à ce qui était vu dans l’éditeur, le contenu a été rendu comme un bloc de code, avec des barres obliques inverses ajoutées avant les crochets :

\[foo\]

Contexte supplémentaire :

Je pense qu’il est correct que l’éditeur de texte enrichi ignore le balisage Markdown apparent présent dans le contenu collé de type « text/html ». Tout formatage intentionnel dans un tel contenu sera défini par des balises HTML, donc le contenu qui ressemble à du Markdown est très probablement fortuit plutôt qu’un véritable balisage. La faute ici est donc que la syntaxe Markdown fortuite est rendue lors de la publication ; et non qu’elle n’est pas rendue dans l’éditeur.


Je suis en mesure de reproduire le défaut sur try.discourse.org en « mode sans échec » (safe mode).

1 « J'aime »