所以我有一个非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 在插入之前不重新格式化我的字符串?