我最近添加了facebook like按钮,但是以下代码在chrome中返回错误:Uncaught TypeError:Object#没有方法'provide'
<!-- Facebook -->
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({appId: '121814204514513', status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
<!-- Facebook -->
喜欢按钮有效但错误很烦人,有谁知道怎么解决?
由于
答案 0 :(得分:7)
当我尝试将http://connect.facebook.net/en_US/all.js注入Google阅读器时,我最近遇到了同样的问题(对于这个令人兴奋的Kynetx编码竞赛:http://code.kynetx.com/2011/04/26/250-to-build-kynetx-facebook-send-within-24hrs-ends-apr-27th/)。 all.js以“if(!window.FB)window.FB = {...”开头,并声明'provide'方法。在谷歌阅读器中,FB对象已经存在(不知道为什么或如何创建)所以if中的代码从未被执行过。我使用的技巧是在包含“http://http://connect.facebook.net/en_US/all.js”之前将FB设置为null。谷歌阅读器没有抱怨。它也可能是您的情况的解决方案。 更新:您可能需要将FB设置为null:
var head = $("head").get(0); // using jquery
var script2 = document.createElement("script");
script2.innerHTML = "window.FB = null;FB=null;";
head.appendChild(script2);
答案 1 :(得分:2)
虽然,Loic Devaux提供的代码可以解决这个问题,但在您的情况下并不需要。他正在解决第三方网站上显示的标记问题......
我遇到了同样的问题,并且最初添加了此代码来解决它。然后我认为一定有什么不对劲我不是做对了。我在一个已经有facebook分享按钮的页面上添加了facebook评论框。所以我刚刚在初始化脚本之后移动了共享脚本,错误就消失了。
我的建议是检查您的网页上是否有多个FB小部件。如果是这样,请阅读文档并确保在正确的位置添加了正确的脚本。
答案 2 :(得分:1)
Loic的解决方案在IE中不起作用。相反,你必须这样做:
var head = $("head").get(0); // using jquery
var script2 = document.createElement("script");
if (!$.browser.msie ) {
script2.innerHTML = "window.FB = null;FB=null;";
}else{
script2.text = "window.FB = null;FB=null;";
}
head.appendChild(script2);