Javascript 如何避免Facebook xfbml.customerchat.js与sdk.js冲突?

Javascript 如何避免Facebook xfbml.customerchat.js与sdk.js冲突?,javascript,facebook,Javascript,Facebook,我的网站上有两个应用程序 客户聊天插件(摘自Facebook粉丝页面) Facebook登录应用程序 第一批 js.src='//connect.facebook.net/en_en/sdk/xfml.customerchat.js' 第二个加载 js.src=“//connect.facebook.net/en_en/all.js#xfml=1&version=v3.3&appId=MYFACEBOOKID” 两个应用程序不能一起工作——如果一个能工作,另一个就不能 因此,如果Faec

我的网站上有两个应用程序

  • 客户聊天插件(摘自Facebook粉丝页面)
  • Facebook登录应用程序
  • 第一批

    • js.src='//connect.facebook.net/en_en/sdk/xfml.customerchat.js'
    第二个加载

    • js.src=“//connect.facebook.net/en_en/all.js#xfml=1&version=v3.3&appId=MYFACEBOOKID”
    两个应用程序不能一起工作——如果一个能工作,另一个就不能

    因此,如果Faecbook登录SDK将首先加载为,然后是客户聊天抛出,那么控制台注意:

    CustomerChat插件不再是主要Facebook SDK的一部分。 要继续使用它,请使用正确的SDK URL, 意思是用sdk/xfbml.customerchat.js替换sdk.js。 有关更多详细信息,请参阅

    否则,如果仅加载客户聊天,则

    在FB.init()之前调用FB.login()

    发生


    想法?

    这段代码来自客户聊天插件(由FB在粉丝页面设置中生成)

    我从Facebook登录插件中添加了FB.init的一部分,如下所示:

    <script>
              window.fbAsyncInit = function() {
                FB.init({
                  xfbml            : true,
                  version          : 'v3.3'
                });
              };
    // added part START
              window.fbAsyncInit = function() {
                FB.init({
                  appId      : 'MYAPPID', // Facebook login
                  cookie     : true,
                  xfbml      : true,
                  version    : 'v3.3'
                });
              };
    // added part END
              (function(d, s, id) {
              var js, fjs = d.getElementsByTagName(s)[0];
              if (d.getElementById(id)) return;
              js = d.createElement(s); js.id = id;
              js.src = '//connect.facebook.net/lt_LT/sdk/xfbml.customerchat.js';
              fjs.parentNode.insertBefore(js, fjs);
            }(document, 'script', 'facebook-jssdk'));
    </script>
    
    
    window.fbAsyninit=函数(){
    FB.init({
    xfbml:是的,
    版本:“v3.3”
    });
    };
    //新增部分开始
    window.fbAsyninit=函数(){
    FB.init({
    appId:'MYAPPID',//Facebook登录
    曲奇:是的,
    xfbml:是的,
    版本:“v3.3”
    });
    };
    //添加部分结束
    (功能(d、s、id){
    var js,fjs=d.getElementsByTagName[0];
    if(d.getElementById(id))返回;
    js=d.createElement;js.id=id;
    js.src='//connect.facebook.net/lt_lt/sdk/xfml.customerchat.js';
    fjs.parentNode.insertBefore(js,fjs);
    }(文档“脚本”、“facebook jssdk”);
    

    两个插件都开始工作。

    您不应该同时嵌入这两个插件,
    xfml.customerchat.js
    包含普通SDK的功能和附加功能。有两种方法可以初始化JSSDK—显式地调用
    FB.init
    ,或者隐式地将这些参数附加到SDK URL本身的哈希部分。因此,要修复“FB.login()在FB.init()之前调用”的错误,如果您将这些相同的值附加到客户聊天SDK的URL中就足够了。谢谢大家。这是很好的提示!