Тег HTML5 «button» отображается в предпросмотре редактора, но не в опубликованных постах

Не уверен, что это именно баг. Понимаю ваше замешательство.

Чтобы HTML-теги и атрибуты/имена классов не фильтровались, это нужно явно разрешить в ядре Discourse или в плагине.

Например, список по умолчанию можно найти здесь:
https://github.com/discourse/discourse/blob/main/app/assets/javascripts/pretty-text/addon/allow-lister.js#L115

Также возможно разрешить тег только для предпросмотра. Например, элементы управления изображениями используют несколько комбинаций тегов, имён классов и атрибутов.

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse-markdown-it/src/features/image-controls.js#L198

Вы видите кнопку в предпросмотре, потому что это побочный эффект разрешённого здесь тега.
Однако атрибут disabled игнорируется, так как он не определён.

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse-markdown-it/src/features/image-controls.js#L223

Я не проверял, как именно обрабатывается список разрешённых элементов; интересно, является ли это ожидаемым поведением. :thinking:. На данный момент кажется, что тег разрешён независимо от атрибутов. Я бы ожидал, что кнопка не будет отображаться, если вы не используете точно, например, <button class="alt-text-edit-ok btn btn-primary">.

Вы можете создать плагин, который разрешит <button> при рендеринге поста. Дайте знать, если нужна помощь.

2 лайка