Prioridad/Severidad:
Medio
Plataforma:
Sistema Operativo
- Windows 11
Navegador
- Google Chrome 139.0.7258.128
Discourse
028c90dd5e7a2799ea5b6e963f71fc0222681943
Descripción:
El texto copiado de algunas fuentes puede almacenarse en el portapapeles en un formato con estilo (text/html) además de texto plano (text/plain).
Cuando se pega texto en el editor, si hay un tipo de datos con estilo presente en el portapapeles, se utilizan esos datos en lugar del tipo de texto plano.
Por defecto, los espacios en blanco en el contenido HTML se reducen. Este comportamiento se puede controlar mediante la propiedad CSS white-space.
Al pegar en el editor cuando está en modo “editor de texto enriquecido”, no se respeta la propiedad CSS white-space de los datos del portapapeles. Esto da como resultado que los espacios en blanco siempre se reduzcan en el contenido pegado. En casos donde el contenido de origen tenía la propiedad white-space establecida en el valor pre, esto da como resultado que el contenido pegado sea difícil de leer e incorrecto en casos donde los espacios en blanco del contenido de origen tenían un significado técnico.
Pasos para reproducir:
- Cree un archivo HTML con el siguiente contenido:
<html> <body> <span style="white-space: pre">foo bar </span> </body> </html> - Abra el archivo en su navegador web.
Observe que los espacios en blanco del contenido de la página no se reducen:foo bar - Copie el contenido de la página web.
- Abra el editor de publicaciones.
- Ponga el editor en modo [“editor de texto enriquecido”].
- Pegue el contenido copiado.
En lugar de tener el mismo formato que el contenido copiado, los espacios en blanco del contenido pegado se redujeron:
foo bar
Contexto adicional:
Veo que ProseMirror soporta white-space: pre:
El fallo no ocurre al usar el editor en modo [“editor Markdown”].
El fallo no ocurre si el contenido se pega en un bloque de código en lugar de en el modo de editor normal. Es cierto que en muchos casos sería más apropiado colocar el contenido que usa algo como white-space: pre en un bloque de código. Sin embargo, es bastante común que los usuarios apliquen formato retroactivamente agregando el contenido al editor, seleccionando el contenido y luego usando la barra de herramientas del editor para aplicar el formato (en contraposición al enfoque alternativo de activar un bloque de código antes de agregar el contenido).
Encontré que esta es una herramienta útil para examinar los datos sin procesar del contenido del portapapeles:
Puedo reproducir el fallo en try.discourse.org en “modo seguro”.
