Priorität/Schweregrad:
Mittel
Plattform:
Betriebssystem
- Windows 11
Browser
- Google Chrome 139.0.7258.128
Discourse
028c90dd5e7a2799ea5b6e963f71fc0222681943
Beschreibung:
Text, der aus einigen Quellen kopiert wird, kann zusätzlich zu reinem Text (text/plain) auch in formatierter Form (text/html) in die Zwischenablage gelangen.
Wenn Text in den Composer eingefügt wird, wird, falls ein formatiert datentyp in der Zwischenablage vorhanden ist, diese Datenart anstelle des reinen Texttyps verwendet.
Standardmäßig werden Leerzeichen in HTML-Inhalten reduziert. Dieses Verhalten kann über die CSS-Eigenschaft white-space gesteuert werden.
Beim Einfügen im Composer im Modus „Rich-Text-Editor“ wird die CSS-Eigenschaft white-space der Daten in der Zwischenablage nicht beachtet. Dies führt dazu, dass Leerzeichen im eingefügten Inhalt immer reduziert werden. In Fällen, in denen der Quellinhalt die white-space-Eigenschaft auf den Wert pre gesetzt hatte, ist der eingefügte Inhalt schwer zu lesen und in Fällen, in denen die Leerzeichen des Quellinhalts technische Bedeutung hatten, falsch.
Reproduzierbare Schritte:
- Erstellen Sie eine HTML-Datei mit folgendem Inhalt:
<html> <body> <span style="white-space: pre">foo bar </span> </body> </html> - Öffnen Sie die Datei in Ihrem Webbrowser.
Beachten Sie, dass die Leerzeichen des Seiteninhalts nicht reduziert werden:foo bar - Kopieren Sie den Inhalt der Webseite.
- Öffnen Sie den Beitrags-Composer.
- Versetzen Sie den Composer in den Modus „Rich-Text-Editor“.
- Fügen Sie den kopierten Inhalt ein.
Anstatt das gleiche Format wie der kopierte Inhalt zu haben, wurden die Leerzeichen des eingefügten Inhalts reduziert:
foo bar
Zusätzlicher Kontext:
Ich sehe, dass ProseMirror white-space: pre unterstützt:
Der Fehler tritt nicht auf, wenn der Composer im Modus „Markdown-Editor“ verwendet wird.
Der Fehler tritt nicht auf, wenn der Inhalt anstelle des normalen Editor-Modus in einen Codeblock eingefügt wird. Zwar wäre es in vielen Fällen am besten, Inhalte, die etwas wie white-space: pre verwenden, in einen Codeblock zu setzen. Es ist jedoch ziemlich üblich, dass Benutzer Formatierungen nachträglich anwenden, indem sie den Inhalt in den Composer einfügen, den Inhalt auswählen und dann die Werkzeugleiste des Composers verwenden, um die Formatierung anzuwenden (im Gegensatz zum alternativen Ansatz, einen Codeblock auszulösen, bevor der Inhalt hinzugefügt wird).
Ich fand dieses Werkzeug nützlich, um die Rohdaten des Inhalts der Zwischenablage zu untersuchen:
Ich kann den Fehler auf try.discourse.org im „Sicherheitsmodus“ reproduzieren.
