使用 topic-thumbnails 时,我们的外部嵌入件缺少缩略图

在与 Discourse 团队通过电子邮件进行一些讨论后,我在此更新。

主要发现是,如果一个会变成 onebox 的链接被渲染成 iframe,缩略图将不会被加载。

这意味着链接:

https://app.everviz.com/embed/N0dDTJaOQ

是否渲染缩略图取决于是否允许来自该域的 iframe(“允许的 iframe”)。解决方案是某种方式将 iframe 注入帖子。我创建了一个 插件,它会这样做,并确保将 display: none 设置在图片上,以防止它出现在帖子中。

我认为可以将其推广为:

  1. 对于所有通用的 onebox,如果 get_oembed.thumbnail_url 存在,则静默加载并隐藏旁边的图片。
  2. 也许更好的解决方案是,添加通用支持来提取 get_oembed.thumbnail_url 并将其与帖子关联,而无需将其本身作为 cooked 区域的一部分。

相关位置:

  1. https://oembed.com/
  2. discourse/lib/onebox/engine at main · discourse/discourse · GitHub
  3. discourse/lib/onebox/engine/standard_embed.rb at main · discourse/discourse · GitHub

我对这种模态行为不太满意,即是否启用了“允许的 iframe”?如果 Discourse 在首次向 oembed 端点发送 GET 请求时提取并使用该端点的所有属性,那将是很好的。