Niepoprawne parsowanie elementów blokowych HTML na forum, gdy są inline

1

Problem

Gdy w poście umieścić element blokowy HTML, ale inline, to jest on parsowany (m.in. jego zawartość jest poprawnie formatowana), ale w poście pojawia się tag </p> zaraz za tym elementem. Elementy, które sprawdziłem, to <pre> oraz <h1>; ponieważ nie widzę między nimi innego związku jak taki, że to elementy blokowe, stąd domniemywam, że dzieje się tak dla wszystkich elementów blokowych umieszczonych inline.

Zachowanie aktualne

Element blokowy umieszczony inline jest parsowany, a zaraz za nim umieszczony jest tag </p>.

Zachowanie oczekiwane

?

Przykład

Linijka

Text before <pre>Text inside</pre> Text after

jest parsowana jak na poniższym zrzucie ekranu:

screenshot-20210723040500.png

A tak to wygląda w modelu DOM:

screenshot-20210723040723.png

Środowisko

  • Przeglądarka: Chromium 91.0.4472.114 (Developer Build)
3

Sprawdziłem to. Wyjątkowo nie mogę zwalić winy na parsedown, ale na bibliotekę HTML Purifier. Ona ambitnie naprawia kod HTML. Parsedown wypluwa taki kod:

<p>Text before <pre>Text inside</pre> Text after</p>

HTML Purifier nie pasuje że <pre> jest wewnątrz <p>. Dlatego próbuje wcześniej domknąć znacznik <p> i powstaje takie coś:

<p>Text before </p><pre>Text inside</pre> Text after&lt;/p&gt;

Sprawdzam czy da się to jakoś wyłączyć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1