Предпросмотр и результат Markdown различаются

См. Creating bug reports for Discourse on Meta

try.discourse.org

https://try.discourse.org/t/word1-word2-word3-word4/1430?u=rokejulianlockhart

discuss.kde.org

https://discuss.kde.org/t/difference-between-preview-and-actual-post/1245/2?u=rokejulianlockhart

1 лайк

Привет @rokejulianlockhart

Я могу воспроизвести проблему, и превью действительно отличается от поста. :slight_smile:

Пустая строка ниже или выше ваших тегов играет здесь небольшую роль, но это не критично. Если вы удалите их, обёртывание применится к ближайшему следующему и предыдущему контенту, но не ко всему контенту.

без пустых строк Кроме того, почему
import QtQuick
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts
import QtPositioning

и использование префикса QQC2 перед Action, Button, ApplicationWindow и Frame не работает, тогда как

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtPositioning
import QtQuick.Controls 2.15 as QQC2

и добавление QQC2.Button (согласно [qml+pyqt6] Can't get native control appearance - #2 by carl - Help - KDE Discuss) работает?
Новая строка


Тем не менее…
Я думал, что проблема в том, что <strike>[1] является строчным элементом. Я могу воспроизвести это с другими тегами, такими как <b> или <i>, но не с <strong> или <em>. Значит, дело не в том, что это строчный элемент. Судя по моим наблюдениям с <strong> и <em>, Discourse позволяет оборачивать блоки строчными элементами.

<strong>
<strong>

Кроме того, почему

```qml
import QtQuick
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts
import QtPositioning
```

и использование префикса `QQC2` перед `Action`, `Button`, `ApplicationWindow` и `Frame` не работает, тогда как

```qml
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtPositioning
import QtQuick.Controls 2.15 as QQC2
```

и добавление `QQC2.Button` (согласно https://discuss.kde.org/t/qml-pyqt6-cant-get-native-control-appearance/1240/2?u=rokejulianlockhart) работает?
Новая строка

</strong>

Кажется, это не связано с разрешёнными тегами, поскольку Discourse принимает все эти теги (<strike>, <s>, <b>, <strong>, <i>, <em>…).

Кажется, это тоже не особенность markdown-it, так как я не могу воспроизвести проблему в их демо.


  1. Обратите внимание, что <strike> устарел в пользу <s>. Это деталь, которая ничего не изменит в данном вопросе, но полезно знать… Я узнал об этом только что :smile: ↩︎

5 лайков

Бросил быстрый взгляд из любопытства. Похоже, проблема в библиотеке Nokogiri. :thinking:

Вот как это используется в Discourse:

Loofah.fragment использует HTML4-парсер Nokogiri.

Это можно исправить, используя Loofah.html5_fragment, при условии, что Nokogiri >= 1.14.0 и Loofah >= 2.21.0. В Discourse уже используется Nokogiri::HTML5.fragment, так что это имеет смысл.

Примечание: Loofah 2.21.0 ещё не выпущен; сейчас доступна версия RC1.

11 лайков

Отладка на высоте! Спасибо :folded_hands:

6 лайков

Забью эту страницу в закладки на 30 дней, надеюсь, к тому времени выйдет новый лоофа, и мы сможем просто обновить его.

2 лайка

Я только что попробовал HTML5-версию loofah, и, похоже, у нас возникла проблема с безопасностью:


  1) PrettyText обеспечивает безопасность для img bbcode
     Failure/Error: expect(cooked).to eq(html)
     
       ожидаемое значение: "<p><img src=\"http://aaa.com&lt;script&gt;alert(1);&lt;/script&gt;\" alt=\"\" role=\"presentation\"></p>"
       полученное значение: "<p><img src=\"http://aaa.com<script>alert(1);</script>\" alt=\"\" role=\"presentation\"></p>"
     
       (сравнение выполнено с помощью ==)
     # ./spec/lib/pretty_text_spec.rb:2150:in `block (2 levels) in <main>'
     # ./spec/rails_helper.rb:358:in `block (2 levels) in <top (required)>'
     # /home/sam/.gem/ruby/3.2.1/gems/webmock-3.18.1/lib/webmock/rspec.rb:37:in `block (2 levels) in <top (required)>'

Мне это кажется очень рискованным… подниму вопрос…

3 лайка

Большое спасибо за отладку! Мы исправили это с помощью:

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

Кроме того, почему

import QtQuick
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts
import QtPositioning

и префикс QQC2 перед Action, Button, ApplicationWindow и Frame не работает, тогда как

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtPositioning
import QtQuick.Controls 2.15 as QQC2

и добавление QQC2.Button (согласно [qml+pyqt6] Can't get native control appearance - #2 by carl - Help - KDE Discuss) работает?

4 лайка

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