Случайный Markdown в отформатированном контенте, вставленном в WYSIWYG-редактор, отображается при публикации

Приоритет/Серьезность:

Средний

Платформа:

Операционная система

  • Windows 11

Браузер

  • Google Chrome 141.0.7390.123

Discourse

fb4bd7951aa6ae8c814df702807c12ccb77bd3fd

Описание:

«Редактор с форматированием» предназначен для обеспечения режима «WYSIWYG», при котором содержимое, отображаемое в редакторе, рендерится в опубликованном посте точно так же, как оно представлено в редакторе.

Текст, скопированный из некоторых источников, может сохраняться в буфере обмена в форматированном виде (тип text/html) в дополнение к обычному тексту (тип text/plain).

При вставке текста в редактор, если в буфере обмена присутствует форматированный тип данных, используется именно он, а не обычный текст.

Из-за минималистичной природы синтаксиса часто бывает, что текст содержит содержимое, которое случайно совпадает с разметкой Markdown.

:bug: Опубликованный пост отображается иначе, чем показано в «редакторе с форматированием», если вставленное форматированное содержимое содержит определённую случайную разметку Markdown.

Шаги для воспроизведения:

Случайная разметка списка

  1. Создайте HTML-файл со следующим содержимым:
    <html>
      <body>
    <br />- foo
      </body>
    </html>
    
  2. Откройте файл в веб-браузере.
  3. Скопируйте содержимое веб-страницы.
  4. Откройте редактор публикации.
  5. Переключите редактор в режим «редактор с форматированием».
  6. Вставьте скопированное содержимое в редактор.
    :slightly_smiling_face: Текст был вставлен в точности, а не отображён как список:

    - foo

  7. Опубликуйте пост.

:bug: Вместо соответствия тому, что было показано в редакторе, содержимое было отображено как маркированный список:

  • foo

Случайная разметка блока кода

  1. Создайте HTML-файл со следующим содержимым:
    <html>
      <body>
        <span style="white-space: pre">    foo</span>
      </body>
    </html>
    
  2. Откройте файл в веб-браузере.
  3. Скопируйте содержимое веб-страницы.
  4. Откройте редактор публикации.
  5. Переключите редактор в режим «редактор с форматированием».
  6. Вставьте скопированное содержимое в редактор.
    :slightly_smiling_face: Текст был вставлен в точности, а не отображён как блок кода:

        foo

  7. Опубликуйте пост.

:bug: Вместо соответствия тому, что было показано в редакторе, содержимое было отображено как блок кода:

foo

Случайная разметка блока кода с случайным BBCode

  1. Создайте HTML-файл со следующим содержимым:
    <html>
      <body>
        <span style="white-space: pre">    [foo]</span>
      </body>
    </html>
    
  2. Откройте файл в веб-браузере.
  3. Скопируйте содержимое веб-страницы.
  4. Откройте редактор публикации.
  5. Переключите редактор в режим «редактор с форматированием».
  6. Вставьте скопированное содержимое в редактор.
    :slightly_smiling_face: Текст был вставлен в точности:

        [foo]

  7. Опубликуйте пост.

:bug: Вместо соответствия тому, что было показано в редакторе, содержимое было отображено как блок кода, при этом к скобкам были добавлены обратные слеши:

\[foo\]

Дополнительная информация:

Я считаю, что редактор с форматированием правильно игнорирует видимую разметку Markdown в вставленном содержимом типа «text/html». Любое намеренное форматирование в таком содержимом определяется HTML-тегами, поэтому содержимое, напоминающее Markdown, скорее всего, является случайным совпадением, а не настоящей разметкой. Таким образом, проблема заключается в том, что случайная синтаксическая конструкция Markdown рендерится при публикации, а не в том, что она не отображается в редакторе.


Мне удалось воспроизвести эту проблему на try.discourse.org в «безопасном режиме».

1 лайк