So I have a non-jquery solution to this problem, but I would rather use jquery if there is a way, and also I am very curious as to why this is happening.
What is going on is I have a facebook iframe application, and I am using facebox to dynamically load a some xfbml in an on page pop-up.
Now the xfbml I have loading happens to be the fb:serverfbml tag, which creates an iframe pointed at facebook and renders the fbml. Which essentially means I need to dynamically add the fbml and then re-parse the xfbml after I display the popup. So I have code that looks like:
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'));
};
Now the above code works, however notice that I am using
document.getElementById('invite_holder').innerHTML
rather than
$('#invite_holder').html();
If I use jquery's .html function it actually restructures my HTML before inserting it. It restructures it to the following:
<fb:serverfbml style="width: 300px; height: 225px;">
</fb:serverfbml>
<script type="text/fbml">
<fb:fbml>
</fb:fbml>
</script>
I assume it is doing this because it contains non-standard tags, but is there anyway to have jquery not reformat my string before inserting it?