Prioridade/Severidade:
Média
Plataforma:
Sistema Operacional
- Windows 11
Navegador
- Google Chrome 141.0.7390.123
Discourse
fb4bd7951aa6ae8c814df702807c12ccb77bd3fd
Descrição:
O [“editor de rich text”] (Introducing our new composer, making writing on Discourse easier than ever) destina-se a fornecer uma experiência “WYSIWYG”, onde o conteúdo visto no composer é renderizado exatamente como estará na postagem publicada.
O texto copiado de algumas fontes pode ser armazenado na área de transferência em um formato formatado (tipo text/html) além de texto puro (text/plain).
Quando o texto é colado no composer, se um tipo de dado formatado estiver presente na área de transferência, esses dados são usados em vez do tipo de texto puro.
Devido à natureza mínima da sintaxe, é comum que o texto contenha conteúdo que, coincidentemente, se assemelha à marcação Markdown.
A postagem publicada é renderizada de forma diferente do que é mostrado no “editor de rich text” quando o conteúdo formatado colado contém certa marcação Markdown coincidente.
Passos para reproduzir:
Marcação de lista coincidente
- Crie um arquivo HTML com o seguinte conteúdo:
<html> <body> <br />- foo </body> </html> - Abra o arquivo no seu navegador.
- Copie o conteúdo da página da web.
- Abra o composer de postagem.
- Coloque o composer no modo “editor de rich text”.
- Cole o conteúdo copiado no composer.
O texto foi colado literalmente, em vez de ser renderizado como uma lista:
- foo
- Publique a postagem.
Em vez de corresponder ao que foi visto no composer, o conteúdo foi renderizado como uma lista não ordenada:
- foo
Marcação de bloco de código coincidente
- Crie um arquivo HTML com o seguinte conteúdo:
<html> <body> <span style="white-space: pre"> foo</span> </body> </html> - Abra o arquivo no seu navegador.
- Copie o conteúdo da página da web.
- Abra o composer de postagem.
- Coloque o composer no modo “editor de rich text”.
- Cole o conteúdo copiado no composer.
O texto foi colado literalmente, em vez de ser renderizado como um bloco de código:
foo - Publique a postagem.
Em vez de corresponder ao que foi visto no composer, o conteúdo foi renderizado como um bloco de código:
foo
Marcação de bloco de código coincidente com BBCode coincidente
- Crie um arquivo HTML com o seguinte conteúdo:
<html> <body> <span style="white-space: pre"> [foo]</span> </body> </html> - Abra o arquivo no seu navegador.
- Copie o conteúdo da página da web.
- Abra o composer de postagem.
- Coloque o composer no modo “editor de rich text”.
- Cole o conteúdo copiado no composer.
O texto foi colado literalmente:
[foo] - Publique a postagem.
Em vez de corresponder ao que foi visto no composer, o conteúdo foi renderizado como um bloco de código, com barras invertidas precedendo os colchetes:
\[foo\]
Contexto adicional:
Acho correto que o editor de rich text ignore a marcação Markdown aparente presente no conteúdo colado que tenha o tipo “text/html”. Qualquer formatação intencional em tal conteúdo será definida por tags HTML, portanto, o conteúdo que se assemelha ao Markdown é mais provável de ser coincidente do que marcação real. Portanto, a falha aqui é que a sintaxe Markdown coincidente está sendo renderizada na publicação; não que ela não esteja sendo renderizada no composer.
Consigo reproduzir a falha em try.discourse.org no “modo seguro”.