所以我有一个非jQuery解决这个问题,但我宁愿使用jQuery,如果有一种方式,我也很好奇,为什么发生这种情况。jQuery解析HTML意外和错误
我有一个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的插入之前没有重新格式化我的字符串?
有人可能想要重命名标题,因为它不是HTML被错误地解析,而是一个专有的Facebook格式。 – ironsam 2009-12-31 23:07:58
...但它*被错误地解析... FBML实现的一部分涉及向元素添加一个xmlns:fbml声明,所以它是有效的。 – 2010-01-01 06:18:49
是否将一个xml名称空间添加到一个html文档中,然后使用来自所述xml名称空间的xml标签使这些标签有效的html?当然这个东西不会被验证。 – ironsam 2010-01-01 23:58:49