La etiqueta "button" de HTML5 se muestra en la vista previa del editor, pero no en las publicaciones renderizadas

Problema

Después de guardar el contenido de la publicación, se renderiza durante aproximadamente 4 ms en la publicación renderizada, antes de que aparezca un círculo de carga durante 2 ms, y desaparece:

Soluciones

Si su renderizado en el previsualizador es accidental, y su eliminación de la publicación renderizada es deliberada debido a preocupaciones de seguridad que desconozco, ¿no podría al menos reemplazar \u003cbutton\u003e con \u003cbutton disabled\u003e?

Pregunto porque veo un uso frecuente de \u003ccode\u003e y \u003ckbd\u003e donde \u003cbutton\u003e sería semántico, especialmente en tutoriales y pasos de reproducción.

1 me gusta

No estoy seguro de si es un error en sí. Entiendo tu confusión.

Para evitar que las etiquetas y atributos/nombres de clase HTML sean filtrados, esto debe permitirse explícitamente en el núcleo de Discourse o en un plugin.

Por ejemplo, una lista predeterminada se puede encontrar aquí:

También es posible permitir una etiqueta solo para la vista previa. Por ejemplo, los controles de imagen tienen varias combinaciones de etiquetas/nombres de clase/atributos.

Ves el botón en la vista previa porque es un efecto secundario de la etiqueta que se permite aquí.
Sin embargo, el atributo disabled se ignora porque no está definido.

No comprobé cómo se analiza la lista de permitidos, me pregunto si es el comportamiento esperado. :thinking:. Actualmente, parece que la etiqueta se permite independientemente de los atributos. Habría esperado que el botón no se renderizara si no se usa exactamente, por ejemplo, <button class="alt-text-edit-ok btn btn-primary">.

Puedes crear un plugin para permitir <button> en la publicación después de renderizar. Hazme saber si necesitas ayuda.

2 Me gusta

@Arkshine, estoy agradecido. Sin embargo, no soy un operador de instancia. Simplemente he notado esto al formular contenido.

Este es uno de los muchos casos en los que las representaciones HTML5 y CSS3 en el previsualizador difieren de la renderización final, lo que significa que escribir contenido para Discourse puede ser difícil. Esto es especialmente cierto cuando las ediciones se han deshabilitado o limitado a un período de tiempo muy corto, en toda la instancia.

1 me gusta

¡Entiendo; tiene sentido! Estoy de acuerdo en que no es una buena experiencia.

Si quieres, hice este pequeño plugin para permitir \u003cbutton\u003e con el atributo disabled: GitHub - Arkshine/discourse-markdown-allowlist

Desafortunadamente, no puedes hacer configuraciones en esta situación, así que si quieres añadir otra etiqueta, tendrás que bifurcar mi repositorio y añadirla tú mismo aquí.

2 Me gusta

@Arkshine, ¿no se puede incluir eso en la versión principal? Pregunto porque esto afecta a todas las instancias que utilizo, y pedirles a todas que incorporen un parche para algo tan trivial para ellas probablemente sería inviable.

Normalmente, crearía un problema para algo como esto en el repositorio de GitHub correspondiente, pero la sección de problemas está deshabilitada para Discourse.

¿Usar Feature aquí en lugar de GitHub? Porque Bug esto no lo es.

@Jagster, si esta etiqueta simplemente no estuviera disponible, lo haría. Sin embargo, que el previsualizador no funcione como previsualizador es un Bug.

¿Cómo clasificarías esto como una característica? ¿Cómo reescribirías el título para demostrarlo?

1 me gusta

Feature es una categoría para funciones faltantes. Bug es para errores, y esto no es un error.

¿Quizás te gustaría usarlo exactamente de la misma manera que usarías una sección de problemas en GitHub?

1 me gusta

Creo que la inconsistencia entre las vistas previas y las publicaciones renderizadas es razonable considerarla un Bug.
La solución probablemente será bloquearla también en la vista previa, lo que significa que “agregar soporte para <button> a las publicaciones” sería una Feature request válida en el futuro :wink:

3 Me gusta

De hecho, @david. Debería haber separado estos:

Disculpas y gracias.

3 Me gusta