יש לי שאלה לגבי האופן שבו התשובה ניתנת. שמתי לב כי רבים קודי HTML נראה לעבוד את התצוגה המקדימה של התשובה אבל לא מופיעים התשובה הסופית. למה הם חסומים?

יש לי שאלה לגבי האופן שבו התשובה ניתנת. שמתי לב כי רבים קודי HTML נראה לעבוד את התצוגה המקדימה של התשובה אבל לא מופיעים התשובה הסופית. למה הם חסומים?
Anonim

התשובה הקצרה היא שאנחנו משתמשים בשתי ספריות Markdown שונות כדי להציג את התצוגה המקדימה ואת התשובה הסופית. שתי ספריות שונות מתייחסות ל- HTML באופן שונה.

התשובות שלנו מעוצבות ומעוצבות באמצעות שפת סימון הנקראת "Markdown". Markdown ממיר סימון מוגדר מראש ל- HTML עבור קישורים, תמונות, כותרות, נטויים, הדגשות וכו '.

מבלי לקבל טכני מדי, את התצוגה המקדימה שלנו התשובה נוצרת בדפדפן באמצעות ספריית Javascript. אנו עושים זאת מסיבות מהירות.

כאשר אתה מרענן את הדף, התשובה כבר מומרת ל- HTML באמצעות ספריית Python Markdown שלנו. אנחנו עושים את זה כי אנחנו רוצים את התשובה להיראות נהדר ברגע שאתה מקבל את הדף. אם החלטנו פשוט פלט את התשובה הגולמית ולאחר מכן להמיר אותו באמצעות ספריית Javascript שלנו, היית שם לב הראשון "מכוער" התשובה הגולמית ולאחר מכן לקפוץ לתוך הגרסה מעוצב יפה. זה לא כל כך נורא, אבל הבעיה היא ש- Google ובוטים אחרים שסורקים את האתר שלנו לחיפוש אינם מפעילים את Javascript. הרובוטים האלה יראו תמיד את התשובה הגולמית, המכוערת, שעשויה לפגוע בדירוג החיפוש שלנו.

עכשיו, למה שתי הספריות האלה מתייחסות לקודי HTML בצורה שונה? הספרייה פייתון אחראי על התשובה הסופית "בורח" HTML, כלומר זה לוקח אותם קודי HTML ומשנה אותם לטקסט לא מזיק. אני אומר לא מזיק כי אתה יכול לדמיין המאפשר למשתמשים קלט HTML לתוך הדף שלנו יכול לגמרי להרוס את הפריסה של הדף. ספריית Javascript האחראית על התצוגה המקדימה אינה בורחת HTML, אשר מבחינה טכנית באג.

בעתיד, נצטרך להסיר את היכולת של ספריית Javascript לתצוגה מקדימה של קודי HTML מסיבות אבטחה. כמו כן נעבור לשימוש בספריה אחת כדי להציג את כל הטקסט שלנו ב- Markdown.