Cevabın nasıl verildiği hakkında bir sorum var. Pek çok HTML kodunun cevabın önizlemesinde çalıştığını göründüğünü, ancak son cevabı görünmediğini fark ettim. Bunlar neden engelleniyor?

Cevabın nasıl verildiği hakkında bir sorum var. Pek çok HTML kodunun cevabın önizlemesinde çalıştığını göründüğünü, ancak son cevabı görünmediğini fark ettim. Bunlar neden engelleniyor?
Anonim

Kısa cevap, önizlemeyi ve son cevabı vermek için iki farklı Markdown kütüphanesi kullanıyoruz. Bu iki farklı kitaplık HTML'yi farklı ele alıyor.

Cevaplarımız "Markdown" adı verilen bir işaretleme dili kullanılarak biçimlendirilmiş ve biçimlendirilmiştir. Markdown, bağlantılar, resimler, başlıklar, italik, vurgu vb. İçin önceden tanımlanmış işaretlemeleri HTML'ye dönüştürür.

Çok fazla teknik olmadan, önizlememiz Javascript kitaplığı kullanılarak tarayıcıda oluşturulur. Bunu hız nedeniyle yapıyoruz.

Sayfayı yenilediğinizde, cevap zaten Python Markdown kütüphanemizi kullanarak HTML'ye dönüştürülür. Bunu yapıyoruz, çünkü cevabı sayfaya ulaşır ulaşmaz mükemmel görünmesini istiyoruz. Ham cevabı basitçe çıkarıp Javascript kütüphanemizi kullanarak dönüştürmeye karar verdiğimizde, önce "çirkin" işlenmemiş cevabın ardından güzel bir şekilde biçimlendirilmiş sürüme atladığınızı fark edeceksiniz. Bu o kadar da kötü değil, ama sorun Google ve arama için sitemizi tarayan diğer botların Javascript'i çalıştırmamasıdır. Bu botlar her zaman arama sıralamamıza zarar verebilecek çirkin cevabı göreceklerdi.

Şimdi, bu iki kütüphane neden HTML kodlarını farklı ele alıyor? Son cevaptan sorumlu olan Python kütüphanesi HTML'den "kaçar", yani bu HTML kodlarını alır ve zararsız metne dönüştürür. Zararsız diyorum, çünkü kullanıcıların sayfamıza HTML girmesine izin verdiğinizi hayal edebiliyorsunuz, sayfa düzenini tamamen tahrip edebilir. Önizlemeden sorumlu olan Javascript kütüphanesi, teknik olarak bir hata olan HTML kodundan çıkmaz.

Gelecekte, güvenlik nedeniyle HTML kodlarını önizlemek için Javascript kütüphanesinin yeteneğini kaldırmamız gerekecek. Tüm Markdown metnimizi oluşturmak için tek bir kütüphane kullanmaya da geçeceğiz.