javascript - FB.ui 未定义
问题描述
使用 BugSnag,我可以看到我们网站上的一些用户遇到了这个错误:
FB.ui is not a function
当我访问该站点并进入出现此错误的页面时,我没有任何问题。
这是我们要分享给 fb 的脚本:
<div id="fb-root"></div>
<script>
(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 = 'https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.12&appId=1365705806909063&autoLogAppEvents=1';
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="x-custom-col" id="share-fb-btn">
<a class="x-fb x-btn" data-social-type="fb-share" data-eventlabel="inlineshare">
<i class="ico-facebook"></i>
<span>Share to Facebook!</span>
</a>
</div>
<script>
document.getElementById('share-fb-btn').onclick = function() {
FB.ui({
method: 'share_open_graph',
action_type: 'og.shares',
action_properties: JSON.stringify({
object: {
'og:url':"http://www.example.com/",
'og:title': "Here is some info to share!".",
'og:description': "Decribe it!",
'og:image': "https://www.example.com/image"
}
})
},
function (response) {
// Action after response
});
}
</script>
这似乎只发生在我们的移动布局上。有什么建议么?
解决方案
如果有人使用工具来阻止社交媒体和分析的外部脚本,就会发生这种情况。它阻止加载脚本,因此 FB 不会被初始化并且 FB.ui 将不存在。
您可以通过检查 FB 是否存在,或者window.fbAsyncInit
在 JavaScript SDK 的回调中添加点击侦听器来解决此问题。
推荐阅读
- websocket - 如何在 opencart 1.5 中使用 websocket?
- excel-formula - 将一周中特定日期的值设为零,并在同一周的其他日期均匀添加它们
- database - jar文件保存wso2日志的重复日志
- reactjs - 思考不同的例子?
- javascript - (总 html 新手)如何防止网页出现滚动条,而是调整网站大小以适应浏览器窗口?
- c++ - wxWidgets 中从 wxHTML 迁移到 wxWebView
- jquery - 具有在连续循环中自动分页的数据页面的数据表
- angular - Angular Autocomplete - 如何推迟对数据的 API 请求,直到用户关注该字段?
- pdf - XSL-FO 到 PDF 与 Ibex 如何压缩文件
- android - 如何在Android的tableview中左对齐文本