Заголовки HTML с переносами строк: заголовок отсутствует и несоответствие между превью и отрендеренным постом

Привет! У меня есть несколько постов, импортированных из другого программного обеспечения для форумов, в заголовках которых есть переносы строк. В превью поста они отображаются корректно, но в окончательном «запечённом» посте они не рендерятся как заголовки. Я наблюдаю эту проблему как на своём форуме, обновлённом вчера, так и здесь, на Discourse Meta:


Тест заголовка с переносами строк

Обычный абзац.

Заголовок без переносов строк


Тег <h2> остаётся пустым, а текст после него оборачивается в <p>:

<h2 dir="ltr">
</h2><p dir="ltr">Тест заголовка с переносами строк</p>

На 99% уверен, что это недавняя регрессия, так как я специально проверял заголовки в импортированных постах от того же пользователя в процессе миграции, и мы с ним оба помним, что они отображались корректно.

2 лайка

Хм, учитывая упомянутые выше вещи, связанные с направлением слева направо, @Osama, это может быть связано с недавно добавленным CSS-переключателем?

2 лайка

Думаю, нет, потому что итоговый/обработанный HTML поста неверен, а CSS-переключатель (будь то старый или новый) вообще не участвует в процессе обработки поста.

^ Текст внутри тега <p> должен находиться внутри тега <h2>, и тега <p> вообще быть не должно (на мой взгляд).

6 лайков

Это, похоже, происходит во время обработки, а именно при парсинге Markdown.

Передача заголовка с переносами строк в PrettyText.markdown возвращает содержимое заголовка, обернутое в тег p.

Затем при очистке параграф извлекается из тега заголовка, что приводит к следующему результату:

Думаю, это происходит потому, что параграф внутри тега заголовка не соответствует спецификации?

Я всё ещё изучаю код парсера Markdown, чтобы понять, почему содержимое изначально оборачивается в тег p.

2 лайка

О, это очень связано с:

Я готов подождать ещё несколько недель, пока Loofah не выпустит обновление.

Напишу твит Майку, чтобы упомянуть об этом.

2 лайка

Привет! Спасибо, что разобрались в этом. HTML не обращает внимания на переносы строк, поэтому технически это корректно:

<h2>

Heading test with line breaks

</h2>

Кажется, проблема в парсере Markdown, который работает после или внутри HTML-парсера и генерирует теги <p> для переносов строк.

1 лайк

Привет! Мы исправили это с помощью

как видно здесь:

Заголовок с разрывами строк

Обычный абзац.

Заголовок без разрывов строк


8 лайков

Рад это слышать, спасибо @nat! Это требует перепрошивки постов?

2 лайка

Да, это требует перепекания — мы не можем сделать это автоматически с помощью этого исправления, так как это дорогостоящая операция.

3 лайка

Эта тема была автоматически закрыта через 2 дня. Новые ответы больше не принимаются.