したがって、私はこの問題に対する非jQueryソリューションを持っていますが、方法があればむしろ jQuery を使用したいと思います。また、なぜこれが起こっているのかについて非常に興味があります。
Facebook iframe アプリケーションがあり、Facebox を使用してページ上のポップアップにXFBMLを動的にロードしています。
今、私が読み込んでいる XFBML はたまたまfb:serverfbml
タグであり、Facebook を指す iframe を作成し、FBML をレンダリングします。これは基本的に、FBML を動的に追加し、ポップアップを表示した後に XFBML を再解析する必要があることを意味します。だから私は次のようなコードを持っています:
var App = {};
App.inviteFBML = '\
<fb:serverfbml style="width: 300px; height: 225px;"> \
<script type="text/fbml"> \
<fb:fbml> \
</fb:fbml>\
</script>\
</fb:serverfbml>';
App.inviteFBMLHolder = "<div id='invite_holder' style='width: 300px; height: 250px;'></div>";
App.showInvitePrompt = function(){
$.facebox(App.inviteFBMLHolder);
document.getElementById('invite_holder').innerHTML = App.inviteFBML;
FB.XFBML.Host.parseDomElement(document.getElementById('facebox'));
};
上記のコードが機能するようになりましたが、使用していることに注意してください
document.getElementById('invite_holder').innerHTML
それよりも
$('#invite_holder').html();
jQuery の.html
関数を使用すると、HTML を挿入する前に実際に再構築されます。それを次のように再構築します。
<fb:serverfbml style="width: 300px; height: 225px;">
</fb:serverfbml>
<script type="text/fbml">
<fb:fbml>
</fb:fbml>
</script>
非標準のタグが含まれているため、これを行っていると思いますが、挿入する前にjQueryが文字列を再フォーマットしないようにする方法はありますか?