Saya punya pertanyaan tentang bagaimana jawaban diberikan. Saya perhatikan bahwa banyak kode HTML tampaknya berfungsi di pratinjau jawaban tetapi tidak muncul jawaban akhir. Mengapa ini diblokir?

Saya punya pertanyaan tentang bagaimana jawaban diberikan. Saya perhatikan bahwa banyak kode HTML tampaknya berfungsi di pratinjau jawaban tetapi tidak muncul jawaban akhir. Mengapa ini diblokir?
Anonim

Jawaban singkatnya adalah kita menggunakan dua perpustakaan Markdown yang berbeda untuk menyajikan pratinjau dan jawaban akhir. Dua pustaka yang berbeda ini memperlakukan HTML secara berbeda.

Jawaban kami ditata dan diformat menggunakan bahasa markup yang disebut "Markdown." Markdown mengonversi markup standar ke HTML untuk tautan, gambar, tajuk, huruf miring, penekanan, dll.

Tanpa terlalu teknis, pratinjau jawaban kami dibuat di browser menggunakan perpustakaan Javascript. Kami melakukan ini karena alasan kecepatan.

Saat Anda menyegarkan halaman, jawabannya sudah dikonversi ke HTML menggunakan pustaka Python Markdown kami. Kami melakukan ini karena kami ingin jawaban tampak hebat segera setelah Anda sampai ke halaman. Jika kami memutuskan untuk hanya menampilkan jawaban mentah dan kemudian mengonversinya menggunakan perpustakaan Javascript kami, Anda akan melihat terlebih dahulu jawaban mentah "jelek" dan kemudian melompat ke versi yang diformat dengan baik. Itu tidak terlalu buruk, tetapi masalahnya adalah bahwa Google dan bot lain yang merayapi situs kami untuk pencarian tidak menjalankan Javascript. Bot itu akan selalu melihat jawaban mentah dan jelek yang dapat merusak peringkat pencarian kami.

Sekarang, mengapa kedua perpustakaan ini memperlakukan kode HTML secara berbeda? Pustaka Python yang bertanggung jawab atas jawaban akhir "lolos" HTML, artinya dibutuhkan kode HTML tersebut dan mengubahnya menjadi teks yang tidak berbahaya. Saya katakan tidak berbahaya karena Anda dapat membayangkan memungkinkan pengguna untuk memasukkan HTML ke halaman kami benar-benar dapat menghancurkan tata letak halaman. Pustaka Javascript yang bertanggung jawab atas preview TIDAK luput dari HTML, yang secara teknis adalah bug.

Di masa mendatang, kita harus menghapus kemampuan perpustakaan Javascript untuk melihat kode HTML untuk alasan keamanan. Kami juga akan pindah ke menggunakan satu pustaka untuk merender semua teks Penurunan harga kami.