6

页面加载后,我发出 AJAX 请求以下拉 HTML 块,其中包含代表 Facebook 用户个人资料图片的标签。我将结果附加到 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 控制台中没有看到任何异常或错误。

谢谢

4

3 回答 3

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 );
于 2009-09-22T21:23:22.113 回答
6

FB.XFBML.Host.parseDomTree 对我不起作用。也许它在新的api中发生了变化。起作用的是:

FB.XFBML.parse(document.getElementById('foo'))

或者

FB.XFBML.parse()

如果你想解析整个页面。

于 2010-05-27T06:14:08.717 回答
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 内容。

于 2011-07-30T17:18:55.557 回答