所以我有一個非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