2011-08-25 88 views
0
Uncaught ReferenceError: _onloadHook is not defined 

爲什麼?我的代碼如下:爲什麼我爲我的Facebook Like按鈕獲取此錯誤?

<!DOCTYPE html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> 
<html> 
<head> 
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script> 
    <script type="text/javascript"> 
    //Initialize facebook 
     FB.init({ 
      appId : '12345', 
      status : true, // check login status 
      cookie : true, // enable cookies to allow the server to access the session 
      xfbml : true, // parse XFBML 
      channelUrl : 'http://www.abc.com/channel.html', // channel.html file 
     }); 
    </script> 
</head> 

<body> 
<div id="fb-root"></div> 
<fb:send href="http://abc.com/blah" font="lucida grande" ref="codes_popup"></fb:send> 
<fb:send href="http://abc.com/blah" font="lucida grande" ref="codes_popup"></fb:send> 
</body> 
</html> 

編輯:當我有多個這會發生。當我只有一個「發送」按鈕時,錯誤不存在。

對於每個額外的「發送」按鈕,都會發生錯誤。

回答

1

這是Facebook平臺中的一個錯誤;它已經被報告爲bug #20041

0

將Facebook的JS庫和JS代碼的腳本fb-root格:

<!DOCTYPE html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> 
<html> 
<head> 

</head> 

<body> 
<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script type="text/javascript"> 
//Initialize facebook 
    FB.init({ 
     appId : 'XXX', 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : true, // parse XFBML 
     channelUrl : 'http://www.abc.com/channel.html', // channel.html file 
    }); 
</script> 
<fb:send href="http://abc.com/blah" font="lucida grande" ref="codes_popup"></fb:send> 
</body> 
</html> 
+0

我把它放在jQuery的document.ready中,但它仍然在發生 – user847495

+0

讓我們一步一個腳印,上面的工作是否奏效? – ifaour

+0

@ifaour:我直接在'fb-root'下使用了它,我得到了和OP一樣的錯誤,似乎是今天剛剛開始的 – TMC

0

我今天得到了完全相同的錯誤。

如果您提到,FB文檔說您需要將FB <script>標籤置於<div id="fb-root"></div>之下。但是,在他的示例和FB文檔中,他們將腳本直接放在<div id="fb-root"></div>之下。我這樣做,仍然得到OP提到的錯誤。我終於能夠通過將FB <script>標籤移動到頁面的最底部,在關閉</body>標籤之前解決問題。我相信發生的事情是我的一些其他腳本干擾了加載FB腳本。希望有所幫助。

+0

它或者是你提到或者你需要使用[異步加載](http://stackoverflow.com/questions/5334977/is-there-a-way-to-detect-if-the-facebook-javascript-sdk-loaded-successfully/ 5336483#5336483) – ifaour

0

您應該使用升級後的異步方法調用facebook javascript。這將確保整個DOM被加載,以便fb:root已經在頁面上。

http://developers.facebook.com/docs/reference/javascript/FB.init/

<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId : 'YOUR APP ID', 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : true, // parse XFBML 
     channelUrl : 'http://www.yourdomain.com/channel.html', // Custom Channel URL 
     oauth : true //enables OAuth 2.0 
    }); 
    }; 

    (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); 
    }()); 
</script> 

也非常重要是增加支持的OAuth 2.0 http://developers.facebook.com/blog/post/525/

oauth : true 

隨着10月1日,如果你沒有,你的應用程序將無法正常工作。

相關問題