Facebookの投稿の埋め込みを動的に追加する方法を試してみます。
サンプルコード
Facebookの埋め込み投稿のページからコードを取得します。
ステップ1のコードをコピーして、開始のbodyタグ直後に追加します。
<div id="fb-root"></div> <script async defer crossorigin="anonymous" src="https://connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v17.0" nonce="r80bZILX"></script>
ステップ2のコードをコピーして、埋め込み先に追加します。(下記は見やすいように改行を追加しています。)
<div class="fb-post" data-href="https://www.facebook.com/HatsuneMikuOfficialPage/posts/pfbid02Ce6ncCNXbYYd27UbUafLYyz4wZBrNA4R1R6evqaPm9KbQoWwwnMfEKxERvNWwip7l" data-width="500" data-show-text="true"> <blockquote cite="https://www.facebook.com/HatsuneMikuOfficialPage/posts/825162938974375" class="fb-xfbml-parse-ignore"> <p>Hatsune Miku “Magical Mirai 2023” theme song 『HERO』will be premiere at 19:00 JST today! #HatsuneMiku #MagicalMirai2023</p> <a href="https://www.facebook.com/HatsuneMikuOfficialPage">Hatsune Miku</a>さんの投稿 <a href="https://www.facebook.com/HatsuneMikuOfficialPage/posts/825162938974375">2023年6月29日木曜日</a> </blockquote> </div>
これでページの表示を行うと、.fb-postの中身が置き換えられ、iframeでの埋め込みができました。
Facebook投稿の埋め込みのデモページ
埋め込み部分のタグを必要な内容のみに抜粋すると、以下のようになります。
<div class="fb-post" data-href="https://www.facebook.com/HatsuneMikuOfficialPage/posts/pfbid02Ce6ncCNXbYYd27UbUafLYyz4wZBrNA4R1R6evqaPm9KbQoWwwnMfEKxERvNWwip7l" data-width="500" data-show-text="true"></div>
data-href内にFacebookアカウントと投稿IDを変更すれば、他の投稿の埋め込みもできます。
埋め込みコード変更のデモページ
次に動的な埋め込みを試してみます。
ボタンクリックで#wrapper内にFacebook投稿の埋め込みが追加される想定です。
<button id="add">追加</button> <div id="wrapper"></div>
埋め込みタグを動的に#wrapper内に追加してみます。
document.querySelector("#add").addEventListener('click', function() { // 要素の追加 document.querySelector("#wrapper").innerHTML = `<div class="fb-post" data-href="https://www.facebook.com/HatsuneMikuOfficialPage/posts/pfbid02Ce6ncCNXbYYd27UbUafLYyz4wZBrNA4R1R6evqaPm9KbQoWwwnMfEKxERvNWwip7l" data-width="500" data-show-text="true"></div>`; });
この場合は.fb-postの中身は置き換わりません。
動的な追加のデモページ1
埋め込みタグの追加後に、FB.XFBML.parse() を実行します。
document.querySelector("#add").addEventListener('click', function() { // 要素の追加 document.querySelector("#wrapper").innerHTML = `<div class="fb-post" data-href="https://www.facebook.com/HatsuneMikuOfficialPage/posts/pfbid02Ce6ncCNXbYYd27UbUafLYyz4wZBrNA4R1R6evqaPm9KbQoWwwnMfEKxERvNWwip7l" data-width="500" data-show-text="true"></div>`; // Facebookの埋め込みコードの更新 FB.XFBML.parse(); });
これでボタンクリック後に埋め込みを追加することができました。
動的な追加のデモページ2
コメントが承認されるまで時間がかかります。