Текстовый редактор с поддержкой форматирования преобразует bbcode в отображаемую математику

Описание

При вставке BB-кода в визуальный редактор скобки экранируются как \\[ и \\]. Однако это превращает их в допустимый блок математической формулы, из-за чего они ошибочно отображаются как математика.

Воспроизведение

  1. Скопируйте следующий текст:

    [details="summary"]
    some text
    [/details]
    
  2. Вставьте его, например, в notepad.exe.

  3. Скопируйте текст из notepad.exe, чтобы убрать информацию о форматировании.

  4. Вставьте его в визуальный редактор.

  5. Текст должен отображаться как код; снимите флажок кнопки «код», чтобы сделать его обычным текстом.

Альтернативно, вы можете вручную ввести указанный выше BB-код в визуальный редактор.

Ожидаемое поведение

Либо

summary

some text

что допустимо, так как это исходный смысл BB-кода, либо

[details=“summary”]
some text
[/details]

что также допустимо, так как именно это вы видите в WYSIWYG-редакторе.

Фактическое поведение

details="summary"

some text

/details

что недопустимо.

2 лайка

Мне не удалось воспроизвести эту проблему. Я пробовал как на MacBook Pro, так и на настольном компьютере с Windows, где смог точно следовать вашим инструкциям по воспроизведению.

В обоих случаях я получал доступ к сайту через браузер Firefox.

2 лайка

Привет, Марк,

Ты можешь воспроизвести это, вручную введя какой-нибудь bbcode в редактор с форматированием (то есть не вставляя его)? Форматирование через буфер обмена действительно сложный процесс…

Если у вас пользователи вставляют bbcode, попробуйте отключить discourse_math_enable_latex_delimiters.

Однако я тоже не могу воспроизвести проблему. В моём случае в буфере обмена было доступно:

Formats: TIMESTAMP,TARGETS,SAVE_TARGETS,MULTIPLE,STRING,UTF8_STRING,TEXT,text/plain,text/plain;charset=utf-8,chromium/x-internal-source-rfh-token,chromium/x-source-url
'[details="summary"]\nsome text\n[/details]'

или простая версия:

Formats: TARGETS,UTF8_STRING
'[details="summary"]\nsome plain text\n[/details]\n'

При использовании копирования/вставки через браузер (вместо кнопки копирования) в моём буфере обмена было:

Formats: TIMESTAMP,TARGETS,SAVE_TARGETS,MULTIPLE,STRING,UTF8_STRING,TEXT,text/html,text/plain,text/plain;charset=utf-8,chromium/x-internal-source-rfh-token,chromium/x-source-url
UTF8_STRING:
b'[details="summary"]\nsome text\n[/details]'
text/html:
b'<span style="color: rgb(199, 199, 199); font-family: &quot;JetBrains Mono&quot;, Consolas, Monaco, monospace; font-size: 15.75px; font-style: normal; font-variant-ligatures: none; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre; background-color: rgba(0, 0, 0, 0.25); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">[details="summary"]\nsome text\n[/details]</span>'
text/plain:
b'[details="summary"]\nsome text\n[/details]'
text/plain;charset=utf-8:
b'[details="summary"]\nsome text\n[/details]'

но даже это вставлялось корректно.

Да, я теперь могу проверить это поведение, просто введя текст в редакторе форматированного текста:

summary

Вот не совсем скрытые детали.

Сказав это, стоит отметить, что богатый редактор предоставляет инструменты для ввода подобных элементов через интерфейс «укажи и кликни». Если вы хотите ввести скрытые детали, то, полагаю, вам следует использовать этот интерфейс.

Давайте посмотрим, работает ли это:

Summary

Этот текст действительно скрыт!!

1 лайк

Похоже, моя система добавляет

 для буфера обмена…

> arguments[0].clipboardData.getData('text/html')
'<pre><code class="lang-plaintext hljs language-plaintext" data-highlighted="yes">[details="summary"]
какой-то текст
[/details]
</code></pre>' 

В любом случае, главная проблема в том, что то, что вы видите в визуальном редакторе, не соответствует тому, что вы получаете.

Да!

У нас в инстансе произошло следующее: кто-то предоставил шаблон для заполнения другими людьми — что-то вроде …

[details="Часть 1"]
- [ ] проверить
- [ ] проверить
- [ ] проверить
[/details]
[details="Часть 2"]
- [ ] проверить
- [ ] проверить
- [ ] проверить
[/details]
...

… а затем многие вернулись (неожиданно) с отображаемой математикой, например …

details="Часть 1"
  • [ ] проверить
  • [x] проверить
  • [ ] проверить
/details
details="Часть 2"
  • [x] проверить
  • [ ] проверить
  • [x] проверить
/details

Ещё раз спасибо за ваше внимание!

1 лайк