我最近升级到开放图并在我的网站上实现了一些facebook社交插件,如fb:friendpile fb:like-box等
自从我实现了这些新功能以来,我看到了这些插件的一些随机行为 .
就像在我的主页上,当你输入网址并第一次去的时候,没有任何facebook社交插件被渲染 - 没有登录按钮,没有朋友堆也没有 - 没有 .
但是当你按下CTRL F5时 - 它们会出现 . 首先我认为它可能与我的机器有关,但昨天我的两个用户报告了同样的问题 .
我用Google搜索,似乎与您放置连接代码的位置有关 . 现在,我将脚本的相关部分放在我的头标签中 - 我甚至尝试将它放在身体标签的末尾 - 但它没有任何区别 .
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId: '<?php echo Zend_Registry::getInstance()->configuration->facebook->appid;?>', status: true, cookie: true, xfbml: true});
/* All the events registered */
FB.Event.subscribe('auth.login', function(response) {
// do something with response
login();
});
FB.Event.subscribe('auth.logout', function(response) {
// do something with response
logout();
});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
function login(){
document.location.href = "<?php echo $this->baseUrl(); ?>/login/log";
}
function logout(){
FB.init({appId: '<?php echo Zend_Registry::getInstance()->configuration->facebook->appid;?>'});
FB.logout(function(response) {
// user is now logged out
});
document.location.href = "<?php echo $this->baseUrl(); ?>/login/logout";
return false;
}
</script>
任何有关解决问题的见解都将不胜感激谢谢
1 回答
您的注销逻辑似乎有问题(您在
logout()
中调用FB.logout()
- 但在'auth.logout'事件上调用logout()
,这似乎是循环的) . 您还应该删除logout()
函数内的FB.init()
调用 .<html>
标签上缺少xmlns:fb
通常是导致XFBML无法在IE中呈现的原因,所以我要仔细检查一下 . 您还可以尝试使用正常的脚本标记替换同步加载的异步加载,例如:但是一个实时的repro案例会更有帮助,因为你的代码在大多数情况下看起来很好 .
编辑:你也可以签出http://fbrell.com/xfbml/fb:login-button的例子 .