我有一个图片库,我使用fancybox显示图片,并在图片之间导航。在图片下方,我整合了facebook评论插件,以便能够为每张图片添加部分特定评论。 我的问题是人们为特定图片添加的评论不会出现。但是,如果我添加评论它确实显示,但这些只是我的评论,它们只有在我登录到Facebook时才会出现。有没有人知道我能做错什么?
facncybox图库的网址为:http://www.bass.hr/photogallery.php?album=17 对于Facebook评论集成,我使用从https://developers.facebook.com/docs/reference/plugins/comments/生成的代码。
这是我的代码:
<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 = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=196368707123454";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div id="fancybox_container" style="display:none;">
<?php
foreach ($Imgs as $key => $i) {
?>
<div id="inline_<?php echo $key;?>" style="width:500px;">
<img id="fancyboxContentImage" src="<?php echo $target.$i['filename']; ?>" />
<div style="margin-top:20px;">
<fb:comments href="http://www.bass.hr/<?php echo $target.$i['filename'];?>" num_posts="2" width="450"></fb:comments>
</div>
</div>
<a class="grouped_elements" href="#inline_<?php echo $key;?>" rel="group" ></a>
<?php
}
?>
</div>
<script type="text/javascript">
$(window).load(function(){
$("a.grouped_elements").fancybox({
openEffect : 'fade',
closeEffect : 'fade',
nextEffect : 'fade',
prevEffect : 'fade',
mouseWheel : 'true',
width : 520,
height : 400,
autoSize : 'true',
fitToView : 'true',
type : 'inline',
scrolling : 'yes',
padding : 10,
afterShow :function() {
var referenceHeight = $('div.fancybox-inner div img').height()+15;
$('.fancybox-prev, .fancybox-next').css('height', referenceHeight+'px');
}
});
$("#fancybox_container a.grouped_elements:first").click();
});
</script>
UPDATE1:
我还尝试异步加载facebook JavaScript SDK,就像facebook开发人员JavaScript SDK参考中描述的那样,但结果相同。
UPDATE2:
我还用萤火虫检查了我的图像的网址。如果我复制该url并将其作为参数提供给图形api,则返回的数组中会有注释(请参阅下面的注释,我通过图形api尝试了网址)
UPDATE3:
我创建了一个sepparate测试页面,其中只包含图像和facebook评论插件。之后我将url传递给调试器,因此它会刷新缓存,但没有结果。 这是只有图像+插件的网址: bass.hr/photodisplay.php?photo=pic_1293187827.jpg
任何想法,不一定是解决方案也会有很多不足之处。
提前致谢。
答案 0 :(得分:0)
XFBML标签默认情况下仅在Facebook JS-SDK初始化时解析(一旦DOM准备就绪)。隐藏的内容可能会被跳过。一旦要将XFBML标记呈现到页面
,就需要调用FB.XFBML.parse
您只能通过将其作为参数传递给FB.XFBML.parse
方法
<强>更新强>
看起来它与XFBML渲染没有直接关系,而是传递给onload
函数的文件名中的某个字符阻止FB.XFBML在页面上加载(这就是为什么任何XFMBL标签都没有呈现),有线它只发生在Chrome / Chromium上,而不发生在Safari上(两者都经过测试)。
<body class="background_main" style="background-image: url(../Images/blackjack3.jpg);" onload="MM_preloadImages('Images/home2.png','Images/o
nama2.png','Images/photogallery2.png','Images/forum2.png','Images/news2.png','Images/kontakt2.png')">
这是我在Chromium中看到的错误(出于某种原因,真正的错误只能在正确的地方看到,而且大部分时间都归因于Facebook的all.js)
Uncaught SyntaxError:意外的令牌ILLEGAL(photogallery.php:66)
更新2:
如果未显示其他用户发布的评论(或仅显示评论发布),则可能是某些原因:
更新3:
这可能是错误,可能会在http://developers.facebook.com/bugs/117814361658299
上进行跟踪答案 1 :(得分:0)
想通了..似乎facebook不允许新创建的用户立即发表评论。如果有人再遇到这个,请检查一下。