【问题标题】:Why am I getting this error for my Facebook Like button?为什么我的 Facebook Like 按钮会出现此错误?
【发布时间】:2011-08-25 22:49:57
【问题描述】:
Uncaught ReferenceError: _onloadHook is not defined

为什么?我的代码如下:

<!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>

编辑:当我有多个时,这会发生。当我只有一个“发送”按钮时,错误就不存在了。

对于每个额外的“发送”按钮,都会发生错误。

【问题讨论】:

    标签: facebook-graph-api facebook facebook-fql


    【解决方案1】:

    这是 Facebook 平台中的错误;已经被举报为bug #20041

    【讨论】:

      【解决方案2】:

      将 Facebook JS 库和 JS 代码脚本放在fb-root div 下:

      <!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>
      

      【讨论】:

      • 我把它放在 document.ready for JQuery 但它仍在发生
      • @ifaour:我把它直接放在fb-root div 下,我遇到了与 OP 相同的错误。它似乎今天才开始。
      【解决方案3】:

      我今天遇到了完全相同的错误。

      正如 ifaour 所提到的,FB 文档说您需要将 FB &lt;script&gt; 标签放在 &lt;div id="fb-root"&gt;&lt;/div&gt; 下。但是,在他的示例和 FB 文档中,他们将脚本直接放在 &lt;div id="fb-root"&gt;&lt;/div&gt; 下。我正在这样做,但仍然收到 OP 提到的错误。我终于能够通过将 FB &lt;script&gt; 标签移动到页面的最底部,就在关闭 &lt;/body&gt; 标签之前来解决这个问题。我相信正在发生的事情是我的一些其他脚本干扰了 FB 脚本的加载。希望对您有所帮助。

      【讨论】:

      【解决方案4】:

      您应该使用升级后的异步方法调用 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 日起,如果您不这样做,您的应用将停止正常运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        • 1970-01-01
        • 2021-08-04
        • 2021-08-11
        • 1970-01-01
        • 2013-02-20
        • 1970-01-01
        相关资源
        最近更新 更多