Έχω μια ερώτηση σχετικά με τον τρόπο με τον οποίο αποκτάται η απάντηση. Έχω παρατηρήσει ότι πολλοί κώδικες HTML φαίνεται να λειτουργούν στην προεπισκόπηση της απάντησης αλλά δεν εμφανίζονται στην τελική απάντηση. Γιατί είναι αυτά μπλοκαρισμένα;

Έχω μια ερώτηση σχετικά με τον τρόπο με τον οποίο αποκτάται η απάντηση. Έχω παρατηρήσει ότι πολλοί κώδικες HTML φαίνεται να λειτουργούν στην προεπισκόπηση της απάντησης αλλά δεν εμφανίζονται στην τελική απάντηση. Γιατί είναι αυτά μπλοκαρισμένα;
Anonim

Η σύντομη απάντηση είναι ότι χρησιμοποιούμε δύο διαφορετικές βιβλιοθήκες Markdown για να δώσουμε την προεπισκόπηση και την τελική απάντηση. Αυτές οι δύο διαφορετικές βιβλιοθήκες αντιμετωπίζουν HTML διαφορετικά.

Οι απαντήσεις μας είναι στυλισμένες και μορφοποιημένες χρησιμοποιώντας μια γλώσσα σήμανσης που ονομάζεται "Markdown". Το Markdown μετατρέπει την προκαθορισμένη σήμανση σε HTML για συνδέσμους, εικόνες, κεφαλίδες, πλάγιους χαρακτήρες, έμφασης κτλ.

Χωρίς να είμαστε πολύ τεχνικοί, η προεπισκόπηση απαντήσεων δημιουργείται στο πρόγραμμα περιήγησης χρησιμοποιώντας μια βιβλιοθήκη Javascript. Κάνουμε αυτό για λόγους ταχύτητας.

Όταν ανανεώνετε τη σελίδα, η απάντηση μετατρέπεται ήδη σε HTML χρησιμοποιώντας τη βιβλιοθήκη Python Markdown. Κάνουμε αυτό γιατί θέλουμε η απάντηση να φανεί εξαιρετική μόλις φτάσετε στη σελίδα. Αν αποφασίσαμε να βγάλουμε απλά την ακατέργαστη απάντηση και στη συνέχεια να την μετατρέψουμε χρησιμοποιώντας τη βιβλιοθήκη Javascript, θα παρατηρήσατε πρώτα την "άσχημη" ακατέργαστη απάντηση και στη συνέχεια ένα άλμα στην όμορφη μορφοποιημένη έκδοση. Αυτό δεν είναι τόσο κακό, αλλά το πρόβλημα είναι ότι το Google και άλλα bots που ανιχνεύουν τον ιστότοπό μας για αναζήτηση δεν τρέχουν Javascript. Αυτά τα bots θα βλέπουν πάντα την ωμή, άσχημη απάντηση που θα μπορούσε να βλάψει την κατάταξη αναζήτησης.

Τώρα, γιατί αυτές οι δύο βιβλιοθήκες αντιμετωπίζουν διαφορετικά τους κώδικες HTML; Η βιβλιοθήκη Python που είναι υπεύθυνη για την τελική απάντηση "διαφεύγει" από την HTML, δηλαδή σημαίνει ότι παίρνει τους κώδικες HTML και τις μετατρέπει σε αβλαβές κείμενο. Λέω αβλαβείς επειδή μπορείτε να φανταστείτε επιτρέποντας στους χρήστες να εισάγουν HTML στη σελίδα μας μπορεί να καταστρέψει εντελώς τη διάταξη της σελίδας. Η βιβλιοθήκη Javascript που είναι υπεύθυνη για την προεπισκόπηση ΔΕΝ ξεφεύγει από το HTML, κάτι που είναι τεχνικά ένα σφάλμα.

Στο μέλλον, θα πρέπει να καταργήσουμε τη δυνατότητα της βιβλιοθήκης Javascript να προεπισκόπηση κώδικες HTML για λόγους ασφαλείας. Θα προχωρήσουμε επίσης στη χρήση μιας ενιαίας βιβλιοθήκης για την απόδοση όλου του κειμένου Markdown.