在与 Discourse 团队通过电子邮件进行一些讨论后,我在此更新。
主要发现是,如果一个会变成 onebox 的链接被渲染成 iframe,缩略图将不会被加载。
这意味着链接:
https://app.everviz.com/embed/N0dDTJaOQ
是否渲染缩略图取决于是否允许来自该域的 iframe(“允许的 iframe”)。解决方案是某种方式将 iframe 注入帖子。我创建了一个 插件,它会这样做,并确保将 display: none 设置在图片上,以防止它出现在帖子中。
我认为可以将其推广为:
- 对于所有通用的 onebox,如果
get_oembed.thumbnail_url存在,则静默加载并隐藏旁边的图片。 - 也许更好的解决方案是,添加通用支持来提取
get_oembed.thumbnail_url并将其与帖子关联,而无需将其本身作为cooked区域的一部分。
相关位置:
- https://oembed.com/
- discourse/lib/onebox/engine at main · discourse/discourse · GitHub
- discourse/lib/onebox/engine/standard_embed.rb at main · discourse/discourse · GitHub
我对这种模态行为不太满意,即是否启用了“允许的 iframe”?如果 Discourse 在首次向 oembed 端点发送 GET 请求时提取并使用该端点的所有属性,那将是很好的。