3

我有一个使用 ajax 加载的类似 Facebook 的按钮。该按钮有效,但奇怪的是在Firefox中它没有出现。

<fb:like href="@Model.Url" show_faces="true" height="30" width="400" ></fb:like>

在 Firefox 中,生成的 html 带有高度 = 0px。为什么?

<span style="height: 0px; width: 400px;">
<iframe id="f2b3cbcbf388e" class="fb_ltr " scrolling="no" name="f3cdf7e205a545e" style="border: medium none; overflow: hidden; height: 0px; width: 400px;" ....

这不会发生在 Chrome 上。

与 facebook 相关我只有在 close body 标签之前有这个

<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/pt_PT/all.js#xfbml=1&appId=00000";
        fjs.parentNode.insertBefore(js, fjs);
    } (document, 'script', 'facebook-jssdk'));</script>
4

4 回答 4

2

我仍在调查原因,但就我而言,我认为这是因为在 XFBML 解析时隐藏了包含的 div。仍在寻找更好的解决方案,但这可以通过手动清除添加的高度 css 来解决,如下所示:

FB.XFBML.parse(document, function(){
    $('.fb_button_container iframe').css('height','');
    $('.fb_button_container .fb-like > span').css('height','');
}); 

这使用 jquery ......如果你愿意,你可以很容易地不使用它。同样在这种情况下,我在具有类“fb_button_container”的容器内添加了类似按钮——这不是自动生成的。

于 2012-12-07T20:52:06.283 回答
0

如果我每页有超过 1 个 Facebook 点赞按钮,他的行为就会很奇怪。我将按钮移动到详细信息页面而不是列表页面,这解决了我的问题。

于 2012-12-07T22:21:29.923 回答
0

我有同样的问题。按钮在除 Firefox 之外的所有其他常见浏览器中均正确呈现。不知何故,跨度的内联样式在 Firefox 中设置为 0px。多亏了theozero,我终于设法正确渲染了按钮。像 theozero 一样,我将 Facebook Like 按钮放置在一个 div 中,该 div 在页面加载时被 JS 隐藏。通过 theozero 的回答,我找到了 Facebook 的FB.XFBML.parse 文档,并将他们的重新解析函数完全放在他们最初提供的 Facebook JavaScript SDK 的末尾(最后一行):

(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/de_DE/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
FB.XFBML.parse();

瞧,按钮被渲染了!


编辑:太高兴太快了。这只有效,因为在页面加载时我立即取消隐藏包含按钮的 div。我将解析函数放入取消隐藏 div 的 JS 中。这样可行。确实如此。但是现在元素不再平滑切换了……啊!Facebook!洞!


编辑:所以!现在它完成了。必须在 slideToggle 函数上调用重新解析作为回调,以便在切换操作完成时重新解析元素。.slideToggle('slow', function(){ FB.XFBML.parse(); });当然,点赞按钮明显突然弹出,但我可以忍受,尽管我可以让按钮以某种方式消失。

于 2013-05-30T14:23:32.000 回答
0

我花了一整天的时间才弄明白,但是使用“测试用户”登录 Facebook 会使点赞按钮不可见。就我而言,我总是在 Firefox 上使用我的测试用户登录,而在 Chrome 中使用我的常规 Facebook 用户注销/登录(我最初认为这是浏览器问题)。

但是,解决方案就像注销测试用户一样简单。

在 FB 文档中指定并非所有功能都为测试用户启用(类似按钮是这些功能之一),但我认为它至少会被渲染。无论如何,我希望这对某人有所帮助。

于 2013-08-04T21:29:44.530 回答