FB.init已被调用-这可能表明

问题描述 投票:0回答:5

我有一个没有SDK的Facebook按钮:

<fb:like href="<%= @canonical_url %>" send="" layout="button_count"></fb:like>
     <div id="fb-root"> </div>
     <script>
      // facebook recommend button
      window.fbAsyncInit = function() {
         FB.init({appId: 'myappid', status: true, cookie: true, xfbml: true});
      };
      (function() {
        // delay to simulate slow loading of Facebook library - remove this setTimeout!!
        var t = setTimeout(function() {
            var e = document.createElement('script'); e.async = true;
            e.src = document.location.protocol + '//connect.facebook.net/<%= locale_og_tag %>/all.js';
            document.getElementById('fb-root').appendChild(e);
        }, 0);
      }());
      </script>
  </div>

我在换页时不重新加载Facebook按钮,然后在我的javascript文件中运行:

if (typeof (FB) != 'undefined') {
    FB.init({ status: true, cookie: true, xfbml: true });
   } else {
    $.getScript("http://connect.facebook.net/en_US/all.js#xfbml=1", function () {
     FB.init({ status: true, cookie: true, xfbml: true });
   });
 }

但是我进入控制台:

FB.init has already been called - this could indicate a problem

我该如何解决此问题?

谢谢!

facebook facebook-like
5个回答
2
投票

好吧are


14
投票

您有三个init调用-两个通过FB.init的显式调用和一个通过../all.js#xfbml=1的隐式调用。除去#xfbml=1部分以及FB.init中的任何一个,都应该不错。


1
投票

您已经用window.fbAsyncInit调用FB.init,并且已经在第一个代码块中加载了FB脚本。


0
投票

只需将登录表单与其他页面分开。因此,您不必多次加载FB.init()。


0
投票

也许这会对像我一样拥有标题问题并且没有找到解决方案的其他人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.