1

maexculture.tumblr.com 是我的网站。

刚刚安装了facebook按钮,首先,它要求确认喜欢,然后在确认并按下“喜欢”后,它会切换到计数,然后回到零。“发送”功能有效。但是 Like 功能不是 - facebook 上没有任何内容,并且不计算在内。

这是我在页面顶部的内容:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:fb="https://www.facebook.com/2008/fbml"
      xmlns:og="http://ogp.me/ns#"
      xml:lang="en"
      lang="en">

以及具体的按钮:

<div class="facebook-button">
    <div class="fb-like" data-href="{Permalink}" data-send="true"
         data-layout="button_count" data-width="450" 
         data-show-faces="true"></div>
</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=271140516272162";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

如果您需要更多信息,请告诉我。

4

1 回答 1

1

几个问题:

如果您的代码“靠近头部标签”,则很有可能 DOM 在执行时没有完全填充,因此它会错过检测某些元素。任何访问或操作现有 DOM 元素的脚本都需要出现创建这些元素的任何 HTML 之后(例如,就在 之前</body>)。

fjs = d.getElementsByTagName(s)[0]真的很脆弱,因为它取决于一个特定的脚本元素是文档中的第一个元素。在该脚本上放置一个 ID,然后使用getElementByID()

为了回答您的评论,我的意思是(在 HTML 中)

<script id="fjs" type="text/javascript" src="..." </script>

(在处理脚本中)

fjs=d.getElementByID('fjs');

换句话说,不要指望某个特定<script>元素是文档中的第一个元素,而是在其上贴一个id标签,以便无论它在哪里都可以找到它。

于 2012-09-11T11:27:40.147 回答