我正在使用Facebook JavaScript SDK在我的页面中嵌入“赞”按钮。
什么是fb_xd_fragment? 我发现它会附加到我的网址末尾,例如 http://www.example.com/controller/?fb_xd_fragment,这导致页面出现一些不良的递归重新加载问题。
我正在使用Facebook JavaScript SDK在我的页面中嵌入“赞”按钮。
什么是fb_xd_fragment? 我发现它会附加到我的网址末尾,例如 http://www.example.com/controller/?fb_xd_fragment,这导致页面出现一些不良的递归重新加载问题。
<script src="http://connect.facebook.net/en_US/all.js"></script>
然后我添加了 channelUrl: 行,最终结果如下:
<div id="fb-root"></div> <script>
window.fbAsyncInit = function() {
FB.init({
appId : 'MY APP ID',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channelUrl : 'http://www.example.com/channel.html' // custom channel
}); };
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());</script>
如果 xfbml : true 是您的最后一行,请确保在其后添加逗号。我不熟悉JavaScript,所以不知道我是否充分利用了它,但我知道它可以防止 fb_xd_fragment 问题,并允许在IE中使用FB评论。就我所知,这是在线上唯一可用的解决方案。欢迎进一步调整。
我在脚本中使用的方法来定义channelUrl到我的网站页面,但我仍然得到多个返回到该页面的请求。
通过观察WireShark捕获的流量,我发现Facebook在某些内部调用中使用了channelUrl,并且传递了fb_xd_fragment参数-我改为使用该URL作为channelUrl,并将其重定向到离开我的网站。
我在我的网站上使用多个Like按钮,使用fbml而不是框架,在IE7上,我不再收到来自Facebook的带有fb_xd_fragment参数的请求。
不确定这是否是最佳实践,但它似乎可以工作。
我将此值设置为channelUrl:
'http://static.ak.fbcdn.net/connect/xd_proxy.php'
希望这能有所帮助。$url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
if (isset($_GET['fb_xd_fragment'])) {
$url = str_replace("?fb_xd_fragment=","",$url);
header( "HTTP/1.1 301 Moved Permanently" );
header("Location: {$url}");
exit();
}
经过几天的研究和尝试互联网上的所有解决方案,最终我想出了这个组合:
更改您页面的头部:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" lang="en-US">
这里是代码,将它放在你想要的地方,就像“喜欢”按钮一样:
<div class="yourclass" style="z-index: 10;">
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js" ></script>
<script>FB.init({appId: '1234yourappidhere', status: true, cookie: true, xfbml: true});</script>
<fb:like href="http..yourencodedurlswillputhere" layout="button_count" width="150" action="recommend" colorscheme="light"></fb:like></div>
<script> document.getElementsByTagName('html')[0].style.display='block';</script>
虽然来自GitHub的上面的答案似乎是对另一个问题的回答,但它确实有效。更新:链接已经失效 - 请尝试http://blog.colnect.com/2010/10/fbxdfragment-bug-workaround.html。