javascript - 如何避免 Facebook xfbml.customerchat.js 与 sdk.js 冲突?
问题描述
我的网站上有两个应用程序
- 客户聊天插件(取自 Facebook 粉丝专页)
- Facebook 登录应用程序
拳头一负荷
- js.src = '//connect.facebook.net/en_EN/sdk/xfbml.customerchat.js';
第二个加载
- js.src = "//connect.facebook.net/en_EN/all.js#xfbml=1&version=v3.3&appId=MYFACEBOOKID";
这两个应用程序不能一起工作 - 如果一个工作 tne 另一个不工作。
因此,如果 Faecbook 登录 SDK 将首先加载,那么客户聊天会抛出该控制台通知:
CustomerChat 插件不再是主要 Facebook SDK 的一部分。要继续使用它,请使用正确的 SDK URL,即用 sdk/xfbml.customerchat.js 替换 sdk.js。有关更多详细信息,请参阅https://developers.facebook.com/docs/messenger-platform/discovery/customer-chat-plugin/sdk
否则,如果仅加载客户聊天,则
FB.login() 在 FB.init() 之前调用。
发生...
想法?
解决方案
那段代码来自客户聊天插件(由 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>
两个插件都开始工作了。
推荐阅读
- node.js - Nodejs-将正文设置为谷歌云任务队列
- javascript - 用于发生字符串序列的正则表达式是什么?
- php - Laravel:用户和帖子关系
- c# - 如何使用 manualResetEvent 或任何其他建议停止所有线程来停止我的所有线程?
- ansible - 如何使用 Ansible 在匹配后不立即插入一行?
- javascript - 如何设计我的消息线程(两人交替)
- python - 使用python中的COM对象获取putty应用程序中生成的数据
- docker - 我可以将 Azure 容器实例 (Windows) 中的文件复制/粘贴到外部存储吗?
- javascript - 使用带变量的点表示法在javascript中获取对象值
- c# - 无法从没有静态字段的另一个类调用方法