Ich habe eine Frage, wie die Antwort ausgegeben wird. Ich habe festgestellt, dass viele HTML-Codes in der Vorschau der Antwort zu funktionieren scheinen, aber nicht die endgültige Antwort sind. Warum sind diese gesperrt?

Ich habe eine Frage, wie die Antwort ausgegeben wird. Ich habe festgestellt, dass viele HTML-Codes in der Vorschau der Antwort zu funktionieren scheinen, aber nicht die endgültige Antwort sind. Warum sind diese gesperrt?
Anonim

Die kurze Antwort ist, dass wir zwei verschiedene Markdown-Bibliotheken verwenden, um die Vorschau und die endgültige Antwort zu rendern. Diese beiden unterschiedlichen Bibliotheken behandeln HTML unterschiedlich.

Unsere Antworten werden mit einer Markup-Sprache namens "Markdown" formatiert und formatiert. Markdown konvertiert vordefiniertes Markup in HTML für Links, Bilder, Überschriften, Kursivschrift, Hervorhebungen usw.

Ohne zu technisch zu werden, wird unsere Antwortvorschau mithilfe einer Javascript-Bibliothek im Browser erstellt. Wir machen das aus Geschwindigkeitsgründen.

Wenn Sie die Seite aktualisieren, wird die Antwort bereits mithilfe unserer Python Markdown-Bibliothek in HTML konvertiert. Wir machen das, weil wir möchten, dass die Antwort großartig aussieht, sobald Sie auf die Seite gelangen. Wenn wir uns entschieden haben, die rohe Antwort einfach auszugeben und sie dann mithilfe unserer Javascript-Bibliothek zu konvertieren, bemerken Sie zuerst die "hässliche" rohe Antwort und dann einen Sprung in die schön formatierte Version. Das ist nicht so schlimm, aber das Problem ist, dass Google und andere Bots, die unsere Website für die Suche durchsuchen, kein Javascript ausführen. Diese Bots würden immer die rohe, hässliche Antwort sehen, die unser Suchranking beeinträchtigen könnte.

Warum behandeln diese beiden Bibliotheken HTML-Codes unterschiedlich? Die für die endgültige Antwort verantwortliche Python-Bibliothek "entgeht" HTML, was bedeutet, dass diese HTML-Codes in harmlosen Text umgewandelt werden. Ich sage harmlos, weil Sie sich vorstellen können, dass die Eingabe von HTML in unsere Seite das Layout der Seite vollständig zerstören kann. Die Javascript-Bibliothek, die für die Vorschau verantwortlich ist, gibt KEINEN HTML-Code aus, was technisch ein Fehler ist.

In der Zukunft müssen wir die Javascript-Bibliothek aus Sicherheitsgründen zur Vorschau von HTML-Codes entfernen. Wir werden auch eine einzige Bibliothek verwenden, um den gesamten Markdown-Text zu rendern.