Discourseチームとメールで何度かやり取りした後、ここで更新します。
主な発見は、onebox になるリンクが iframe としてレンダリングされる場合、サムネイルが読み込まれないということです。
つまり、リンク:
https://app.everviz.com/embed/N0dDTJaOQ
は、ドメインからの iframe が許可されているかどうかに応じて、サムネイルをレンダリングしたりしなかったりします(allowed iframes)。これに対する解決策は、何らかの方法で投稿に 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
このモーダル動作にはあまり満足していません。つまり、allowed iframes が有効になっているかどうかが問題です。Discourse が oembed エンドポイントに最初に GET リクエストを送信するときに、そこからのすべてのプロパティを抽出し、利用してくれると良いのですが。