Ho una domanda su come viene resa la risposta. Ho notato che molti codici HTML sembrano funzionare nell'anteprima della risposta ma non sembrano la risposta finale. Perché sono bloccati?

Ho una domanda su come viene resa la risposta. Ho notato che molti codici HTML sembrano funzionare nell'anteprima della risposta ma non sembrano la risposta finale. Perché sono bloccati?
Anonim

La risposta breve è che usiamo due diverse librerie Markdown per rendere l'anteprima e la risposta finale. Queste due diverse librerie trattano l'HTML in modo diverso.

Le nostre risposte sono stilizzate e formattate usando un linguaggio di markup chiamato "Markdown". Markdown converte markup predefinito in HTML per collegamenti, immagini, intestazioni, corsivo, sottolineatura, ecc.

Senza diventare troppo tecnico, la nostra anteprima di risposta viene creata nel browser utilizzando una libreria Javascript. Lo facciamo per ragioni di velocità.

Quando aggiorni la pagina, la risposta è già convertita in HTML usando la nostra libreria Python Markdown. Lo facciamo perché vogliamo che la risposta abbia un bell'aspetto non appena arrivi alla pagina. Se decidessimo semplicemente di generare la risposta non elaborata e poi di convertirla usando la nostra libreria Javascript, noteresti prima la "brutta" risposta grezza e poi un salto nella versione ben formattata. Non è così male, ma il problema è che Google e altri robot che eseguono la scansione del nostro sito per la ricerca non eseguono Javascript. Quei robot vedrebbero sempre la brutta, brutta risposta che potrebbe danneggiare la nostra classifica di ricerca.

Ora, perché queste due librerie trattano i codici HTML in modo diverso? La libreria Python responsabile della risposta finale "sfugge" all'HTML, il che significa che prende quei codici HTML e li modifica in un testo innocuo. Dico innocuo perché puoi immaginare che consentire agli utenti di inserire HTML nella nostra pagina può distruggere completamente il layout della pagina. La libreria Javascript responsabile dell'anteprima NON sfugge all'HTML, che tecnicamente è un bug.

In futuro, dovremo rimuovere la possibilità della libreria Javascript di visualizzare in anteprima i codici HTML per motivi di sicurezza. Ci sposteremo anche sull'utilizzo di una singola libreria per il rendering di tutto il nostro testo Markdown.