0

我正在尝试在页面上实现 XFBML 评论框。它可以在 Firefox 和 Chrome 中运行,但在 Internet Explorer 8 中只是偶尔出现。

当页面点击FB.XFBML.parse('fb-stuff');. 在尝试解析 XFBML 之前,是否需要检查 Facebook Connect 脚本是否已完成加载?

<script type="text/javascript">
    window.fbAsyncInit = function() {
        FB.init({
            appId  : '117378991625799',
            status : false, // check login status
            cookie : false, // enable cookies to allow the server to access the session
            xfbml  : true  // parse XFBML
        });
    };
    (function() {
        var e = document.createElement('script');
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
        FB.XFBML.parse('fb-stuff');
    }());
</script>
4

1 回答 1

2

您不需要自己调用 fb.xfbml.parse,因为您已经在 fbAsyncInit 中指示 facebook init 为您执行此操作。它主要在初始化后向页面添加新的 facebook 元素并希望它们被解析和呈现的情况下很有用。

是的,您应该等待 javascript 库加载。这就是 fbAsyncInit 的全部意义所在。您为连接库创建脚本元素并将其注入到该匿名函数中的 dom 中,但浏览器加载和评估代码需要一些时间,因此 FB 无法立即使用。当脚本已加载(并且 FB 对象可用)时,它将尝试执行 window.fbAsyncInit 然后您可以执行任何您需要的操作。

于 2010-10-28T08:50:56.400 回答