1

fbAsyncInit 回调函数中的 FB 对象仍未定义。一旦 FB 已加载并准备好使用 初始化,这样做的目的不就是回调FB.init({})吗?

如果我在 中添加另一个异步函数setTimeout,则会加载 FB 对象。

看到这个jsFiddle

显然我错过了一些东西。有人可以澄清一下吗?

4

2 回答 2

3

这很尴尬。你能找出丢失的分号吗?感谢JSLint

<div id="fb-root"></div>

<script>
    window.fbAsyncInit = function () {
    debugger;
       if (typeof FB !== "undefined") alert('FB loaded now');
       else alert('FB not loaded');

        //This works
        setTimeout(function () { 
                if (typeof FB !== "undefined") alert('FB loaded now');
               else alert('FB still not loaded');
            },100);
    }

    (function () {
        debugger;
        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);
    } ());

</script>
于 2013-01-30T03:04:33.630 回答
2
<div id="fb-root"></div>

<script>
window.fbAsyncInit = function () 
{
   debugger;
   if (typeof FB !== "undefined") alert('FB loaded now');
   else alert('FB not loaded');

    //This works
    setTimeout(function () 
    { 
        if (typeof FB !== "undefined") 
            alert('FB loaded now');
        else 
            alert('FB still not loaded');
     },100);

};   // --> SEMI-COLON HERE 

(function () {
    debugger;
    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);
} ());

</script>
于 2013-01-30T06:55:05.240 回答