Tengo una pregunta acerca de cómo se representa la respuesta. Me he dado cuenta de que muchos códigos HTML parecen funcionar en la vista previa de la respuesta, pero no aparece la respuesta final. ¿Por qué están bloqueados?

Tengo una pregunta acerca de cómo se representa la respuesta. Me he dado cuenta de que muchos códigos HTML parecen funcionar en la vista previa de la respuesta, pero no aparece la respuesta final. ¿Por qué están bloqueados?
Anonim

La respuesta corta es que usamos dos bibliotecas Markdown diferentes para representar la vista previa y la respuesta final. Estas dos bibliotecas diferentes tratan el HTML de manera diferente.

Nuestras respuestas tienen un estilo y un formato usando un lenguaje de marcado llamado "Markdown". Markdown convierte el marcado predefinido en HTML para enlaces, imágenes, encabezados, cursivas, énfasis, etc.

Sin ser demasiado técnicos, nuestra vista previa de respuestas se crea en el navegador mediante una biblioteca de Javascript. Hacemos esto por razones de velocidad.

Cuando actualiza la página, la respuesta ya se ha convertido a HTML utilizando nuestra biblioteca de Markth de Python. Hacemos esto porque queremos que la respuesta se vea bien tan pronto como llegue a la página. Si decidiéramos simplemente emitir la respuesta en bruto y luego convertirla utilizando nuestra biblioteca de Javascript, primero notará la respuesta en bruto "fea" y luego un salto a la versión bien formateada. Eso no es tan malo, pero el problema es que Google y otros bots que rastrean nuestro sitio para buscar no ejecutan Javascript. Esos bots siempre verían la respuesta cruda y fea que podría perjudicar nuestra clasificación de búsqueda.

Ahora, ¿por qué estas dos bibliotecas tratan los códigos HTML de manera diferente? La biblioteca de Python responsable de la respuesta final "escapa" al HTML, lo que significa que toma esos códigos HTML y los convierte en texto inofensivo. Digo inofensivo porque puedes imaginar que permitir que los usuarios ingresen HTML en nuestra página puede destruir completamente el diseño de la página. La biblioteca de Javascript responsable de la vista previa NO escapa a HTML, que técnicamente es un error.

En el futuro, tendremos que eliminar la capacidad de la biblioteca de Javascript para obtener una vista previa de los códigos HTML por razones de seguridad. También pasaremos a usar una sola biblioteca para representar todo nuestro texto de Markdown.