页面加载后,我正在制作一个AJAX请求来下载一个包含代表Facebook用户个人资料图片的标签的HTML块。我将结果追加到DOM中的一个点但是徽标没有加载,而我看到的只是默认的轮廓。
以下是我用jQuery加载HTML块的方法
$.ajax({
url: "/facebookprofiles"
success: function(result) {
$('#profiles').append(result);
}
});
我附加的HTML是一个像这样的差异列表:
<div class="status Accepted">
<fb:profile-pic class="image" facebook-logo="true" linked="true" size="square" uid="1796055648"></fb:profile-pic>
<p>
<strong>Corona Kingsly</strong>My Status Update<br/>
<span style="font-size: 0.8em">52 minutes ago</span>
</p>
</div>
有什么想法吗?我假设加载dom后没有处理fb标签。有没有办法让这种情况发生?我在Firebug控制台中没有看到任何异常或错误。
由于
答案 0 :(得分:8)
首次尝试
不确定这是否有帮助,但这里有一篇关于Ajax + FBML的文章: http://wiki.developers.facebook.com/index.php/FBJS#Creating_FBML_Elements
特别是,您可以使用setInnerFBML()方法
跟进
所以我认为init函数解析fbml。所以显而易见的问题是,如果在init之后插入fbml,如何让facebook的javascript库重新解析fbml(或者只是解析新的fbml)。
看起来这个帖子可能会有所帮助: http://forum.developers.facebook.com/viewtopic.php?id=22245
虽然论坛上有更多背景信息,但这似乎是相关的代码:
if ( FB.XFBML.Host.parseDomTree )
setTimeout( FB.XFBML.Host.parseDomTree, 0 );
答案 1 :(得分:6)
FB.XFBML.Host.parseDomTree对我不起作用。 也许它已经改变了新的api。 做了什么工作:
FB.XFBML.parse(document.getElementById('foo'))
或
FB.XFBML.parse()
如果你想要解析整个页面。
答案 2 :(得分:0)
我正在使用带有MVC3的Microsoft-Web-Helpers(包括facebook帮助者)
剃刀语法
@Facebook.GetInitializationScripts()
输出
<script type="text/javascript">
window.fbAsyncInit = function () {
FB.init({ appId: '115631105198333', status: true, cookie: true, xfbml: true });
};
(function () {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
} ());
function loginRedirect(url) { window.location = url; }
</script>
所以我需要打电话
window.fbAsyncInit();
重新解析Facebook内容。