Mayroon akong tanong tungkol sa kung paano isinasagot ang sagot. Napansin ko na maraming HTML code tila gumagana sa preview ng sagot ngunit hindi lumitaw ang pangwakas na sagot. Bakit naka-block ang mga ito?

Mayroon akong tanong tungkol sa kung paano isinasagot ang sagot. Napansin ko na maraming HTML code tila gumagana sa preview ng sagot ngunit hindi lumitaw ang pangwakas na sagot. Bakit naka-block ang mga ito?
Anonim

Ang maikling sagot ay gumagamit kami ng dalawang magkakaibang Markdown na mga aklatan upang i-render ang preview at ang pangwakas na sagot. Ang dalawang magkaibang mga aklatan ay gumagamot ng HTML nang iba.

Ang aming mga sagot ay naka-istilo at na-format gamit ang isang markup language na tinatawag na "Markdown." Binago ng Markdown ang paunang-natukoy na markup sa HTML para sa mga link, mga imahe, mga header, mga italics, mga pagbibigay-diin, atbp.

Nang walang masyadong teknikal, ang aming preview ng sagot ay nilikha sa browser gamit ang isang Javascript library. Ginagawa namin ito para sa mga dahilan ng bilis.

Kapag na-refresh mo ang pahina, ang sagot ay na-convert sa HTML gamit ang aming Python Markdown library. Ginagawa namin ito dahil gusto namin ang sagot ay magiging mahusay sa sandaling makuha mo ang pahina. Kung napagpasyahan naming i-output ang raw na sagot at pagkatapos ay i-convert ito gamit ang aming Javascript library, mapapansin mo muna ang "pangit" raw na sagot at pagkatapos ay tumalon sa mahusay na na-format na bersyon. Hindi ito masama, ngunit ang problema ay ang Google at iba pang mga bot na nag-crawl sa aming site para sa paghahanap ay hindi nagpapatakbo ng Javascript. Ang mga bot ay laging nakikita ang raw, pangit na sagot na maaaring makapinsala sa aming ranggo sa paghahanap.

Ngayon, bakit naiiba ang dalawang librarya na ito sa mga code ng HTML? Ang Python library na responsable para sa pangwakas na sagot na "escapes" HTML, nangangahulugang tumatagal ito ng mga HTML code at binabago ang mga ito sa hindi nakakapinsalang teksto. Sinasabi kong hindi nakakapinsala dahil maaari mong isipin na ang ganap na pagwawasak ng layout ng pahina ay maaaring ganap na sirain ang mga user sa input ng HTML sa aming pahina. Ang Javascript library na responsable para sa preview ay HINDI makatakas sa HTML, na kung saan ay technically isang bug.

Sa hinaharap, kakailanganin naming alisin ang kakayahan ng library ng Javascript upang i-preview ang mga code ng HTML para sa mga kadahilanang pang-seguridad. Ililipat din namin ang paggamit ng isang library upang i-render ang lahat ng aming Markdown na teksto.