iframe.contentWindow から twttr オブジェクトを見つけて、event.bind("rendered", () => {}) の第二引数に、表示処理を書くことです。
iframe.addEventListener("load", () =>
iframe.contentWindow.twttr.events.bind("rendered", () =>
iframe.setAttribute("style", "opacity: 1;")
)
);https://twitter.com/openwc/status/1427617679427440643 のような URL から、埋め込みコンテンツをブログサイトなどに表示したいです。
https://publish.twitter.com/oembed?url=${URL} のレスポンスの中の html が、埋め込みコンテンツになります。
これを iframe の srcdoc に設定することで、埋め込みコンテンツを表示することができます。
<iframe></iframe>/*
const url = "https://twitter.com/openwc/status/1427617679427440643";
const oembedUrl = `https://publish.twitter.com/oembed?url=${url}`;
// response.html of `fetch(oembedUrl)` is html.
*/
const html =
'<blockquote class="twitter-tweet"><p lang="en" dir="ltr">`npm init @open-wc` now supports lit v2!<br /><br />Give it a try and let us know what you think<a href="https://t.co/9191LFIYHZ">https://t.co/9191LFIYHZ</a></p>— Open Web Components (@OpenWc) <a href="https://twitter.com/OpenWc/status/1427617679427440643?ref_src=twsrc%5Etfw">August 17, 2021</a></blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>\n';
const iframe = document.querySelector("iframe");
iframe.setAttribute("srcdoc", html);iframe で srcdoc を読み込んだ後、埋め込みたい Tweet の文字列だけが、チラっと見えてしまいます。
下の例であれば、npm init @open-wc now supports lit v2! がチラっと見えるはずです。reload をしてみると分かります。
チラっと見えてしまうのを阻止したいです。
埋め込みコンテンツの描画後イベント rendered というものがあります。これを使います。
実装の順番は、次のとおりです。
load イベントを検知iframe.contentWindow から、twttr オブジェクトを見つけるtwttr.events.bind("rendered", () => {}) で、描画後の処理を書く実際に、コードを書くと、次のとおりです。
/*
const url = "https://twitter.com/openwc/status/1427617679427440643";
const oembedUrl = `https://publish.twitter.com/oembed?url=${url}`;
// response.html of `fetch(oembedUrl)` is html.
*/
const html =
'<blockquote class="twitter-tweet"><p lang="en" dir="ltr">`npm init @open-wc` now supports lit v2!<br /><br />Give it a try and let us know what you think<a href="https://t.co/9191LFIYHZ">https://t.co/9191LFIYHZ</a></p>— Open Web Components (@OpenWc) <a href="https://twitter.com/OpenWc/status/1427617679427440643?ref_src=twsrc%5Etfw">August 17, 2021</a></blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>\n';
const iframe = document.querySelector("iframe");
iframe.addEventListener("load", () =>
iframe.contentWindow.twttr.events.bind("rendered", () =>
iframe.setAttribute("style", "opacity: 1;")
)
);
iframe.setAttribute("srcdoc", html);html は、styleで隠しておきます。(手段は問いません)
<iframe style="opacity: 0;"></iframe>解決した結果が、こちらです。
npm init @open-wc now supports lit v2! のチラっとが見えなくなっているはずです。
-
タグ「サービス」の記事
どうも、Web業界で働き始めて9年目の駆け出しエンジニア、silverbirderです。Spotifyで音楽を聴いていると「この曲、どこかで聞いたことがあるけど、何の主題歌だったかな?」と思うこと、ありませんか?特にドライブ中や作業中に、ふと気になることが多いですよね。 私もそんな経験があり、気になったその曲が主題歌だったアニメを見始めたことがきっかけで、「簡単にタイアップ情報(アニメやドラマなど)を調べられるアプリがあったら便利だな」と思い、このアプリを作ることにしました。
TikTokへスクレイプするバッチをGCP上で構築しました。GCP構築のシステム設計話と、その構築時に、ハマったことを共有します。
みなさん、Zoom使っていますか? ZoomのMeetingを自動生成するGASライブラリを公開しましたので、そのきっかけと使い方について紹介しようと思います。
タグ「フロントエンド」の記事
最近、ヒューマンインターフェース ガイドライン(HIG)という言葉を知りました。 「ヒューマンインターフェイスガイドライン」には、どのAppleプラットフォームでも優れた体験を設計できるようにするためのガイドとベストプラクティスが含まれてい
2026-01-24
主にWeb関連の個人開発をしている際に心がけていることを書きます。 月末に近づくにつれ、AIの利用上限に達してしまうことがあります。 その状況になった時、以下のいずれかの選択肢が私の中では残っています。 課金して利用上限を増やす 無料モデル
個人サイトをリニューアルをしています。 ノート風のデザインを目指して、スタイルを調整していました。 ノートの見た目は、現実にあるノートを再現しようとCSSを書いていました。 現在、以下の画像のようなノートになっています。 ノート風デザインの
2026-01-20