Mám otázku o tom, jak je odpověď poskytnuta. Všiml jsem si, že mnoho HTML kódů vypadá, že fungují v náhledu odpovědi, ale nevypadají jako poslední odpověď. Proč jsou tyto blokovány?

Mám otázku o tom, jak je odpověď poskytnuta. Všiml jsem si, že mnoho HTML kódů vypadá, že fungují v náhledu odpovědi, ale nevypadají jako poslední odpověď. Proč jsou tyto blokovány?
Anonim

Krátkou odpovědí je použití dvou různých knihoven Markdown pro zobrazení náhledu a konečné odpovědi. Tyto dvě různé knihovny zacházejí s HTML odlišně.

Naše odpovědi jsou stylizované a formátované pomocí značkovacího jazyka „Markdown“. Markdown převádí předdefinované značky do HTML pro odkazy, obrázky, záhlaví, kurzívu, zdůraznění atd.

Bez toho, abychom se dostali příliš technické, je náš náhled náhledu vytvořen v prohlížeči pomocí knihovny Javascript. Děláme to z důvodů rychlosti.

Když obnovujete stránku, odpověď je již převedena na HTML pomocí naší knihovny Python Markdown. Děláme to proto, že chceme, aby odpověď vypadala skvěle, jakmile se dostanete na stránku. Kdybychom se rozhodli, že se nám podaří jednoduše odpovědět na surovou odpověď a pak ji převést pomocí knihovny Javascript, všimnete si nejprve „ošklivé“ surové odpovědi a pak skoku do pěkně formátované verze. To není tak špatné, ale problém je, že Google a další roboty, které procházejí naše stránky pro vyhledávání nespouštějí Javascript. Tihle boti by vždy viděli syrovou, ošklivou odpověď, která by mohla zranit naše vyhledávací pořadí.

Proč tyto dvě knihovny zacházejí s HTML kódy jinak? Knihovna Python zodpovědná za konečnou odpověď "unikne" HTML, což znamená, že tyto HTML kódy a změny na neškodný text. Říkám neškodný, protože si dokážete představit, že uživatelé mohou na našich stránkách vkládat HTML, což může zcela zničit rozložení stránky. Knihovna Javascript zodpovědná za náhled neunikne HTML, což je technicky chyba.

V budoucnu budeme muset odstranit schopnost knihovny Javascript prohlížet HTML kódy z bezpečnostních důvodů. Přesuneme se také na použití jediné knihovny, abychom vykreslili celý náš text značky Markdown.