简短的回答是我们使用两个不同的Markdown库来渲染预览和最终答案。这两个不同的库对待HTML的方式不同。
我们的答案使用称为“Markdown”的标记语言进行样式化和格式化。 Markdown将预定义标记转换为HTML,用于链接,图像,标题,斜体,重点等。
如果没有太技术化,我们的答案预览将使用Javascript库在浏览器中创建。我们出于速度原因这样做。
刷新页面时,使用我们的Python Markdown库已将答案转换为HTML。我们这样做是因为我们希望一旦你到达页面,答案看起来很棒。如果我们决定简单地输出原始答案,然后使用我们的Javascript库进行转换,您首先会注意到“丑陋”的原始答案,然后跳转到格式良好的版本。这并不是那么糟糕,但问题是Google和其他抓取我们网站进行搜索的机器人不会运行Javascript。那些机器人总会看到原始的,丑陋的答案,这可能会损害我们的搜索排名。
现在,为什么这两个库对HTML代码的处理方式不同?负责最终答案的Python库“逃避”HTML,这意味着它需要这些HTML代码并将其更改为无害的文本。我说无害,因为你可以想象允许用户在我们的页面中输入HTML可以完全破坏页面的布局。负责预览的Javascript库不会转义HTML,这在技术上是一个错误。
将来,出于安全原因,我们必须删除Javascript库预览HTML代码的功能。我们还将使用单个库来渲染我们所有的Markdown文本。