【问题标题】:Facebook Like button for every item?每个项目的 Facebook Like 按钮?
【发布时间】:2012-02-23 15:07:49
【问题描述】:

我有 Facebook iframe 应用程序,我在其中使用 JSON 提取内容并将其表示在具有搜索条件的列表中。

在项目上单击新内容显示在同一页面上(使用 ajax),该页面显示有关项目的更多信息。我想为每个点击的项目添加一个 LIKE 按钮。

但它必须是不同的 URL,以便我可以将其发布在我的 FB 墙上。因此,当我从墙上的 Like 按钮检查链接时,它会将我重定向到那个特殊项目。

这里有几个问题:

1) 如何为每个item定义Like按钮?

<div class="fb-like" data-href="LINK FOR LIKE BUTTON" data-send="true" data-layout="button_count" data-width="450" data-show-faces="true" data-colorscheme="dark"></div>

这是 LIKE 按钮,我需要为每个项目指定不同的 data-href。

2) 我需要向 url 发送一些参数。假设单击项目时,我应该将项目 ID 发送到 URL。现在我可以将项目 ID 发送到我的 URL,但它只是在我的 iframe 中执行 - 而不是在 facebook URL 中。我该怎么做?

我认为第二个问题可以回答我的第一个问题。

编辑:我正在使用 jQuery 进行此操作。

编辑2: 所以,我在我的网站上使用 jquery,用 JSON 提取内容并用 html 和 jquery 表示它,我有,它都是同一个页面,但是点击我隐藏一些内容并显示另一个,所以我的主要内容是一个列表项目,点击项目我隐藏主要内容,我显示项目信息内容

所以,都是一页,所以它有相同的 URL(主要内容,项目内容,......所有相同的 URL)

所以要为每个项目添加 LIKE 按钮,我需要在这些项目之间做出区别,所以我这样做了

'window.location.href=window.location.href + "#id=" + propertyid;' 

所以现在,每个项目都有自己的 URL,这是我手动完成的,所以现在每个项目都有自己的 URL,我可以将其用于 LIKE 按钮

但是,当我提醒这个新的 window.location.href 似乎没问题时,我得到了这个包含 #id=12345 的新位置,但是当我尝试将该位置发送到 LIKE 按钮 data-href 时,它总是只是主要位置,没有这个新部分,包括项目 id #id=12345

【问题讨论】:

  • 你查看.attr()了吗?这看起来正是您所需要的。
  • 我试过了,但由于我没有解决我的第二个问题,我没有看到任何变化,因为每个喜欢都是针对同一个 url
  • 您是否确保每个 id 都是不同的(并且您没有意外地使它们超载)?否则,jQuery 将同时选择所有这些,因此同时更改它们。您的代码(甚至是伪代码)的基本/一般大纲会有所帮助。
  • 我没有使用 .append 或 .html
  • 现在这是我的问题:

标签: javascript jquery facebook


【解决方案1】:

是的,您可以为动态创建的屏幕内容(例如 Ajax 弹出窗口)上显示的“项目”创建 FB Like 按钮。

问题:

单个项目的网址 FB 要求每个可以被喜欢的项目都有一个“社交图端点”。因此,您还需要支持仅返回“项目”的 url。这是单个项目的 url。如果 FB 查看者想要了解有关该项目的更多信息,这也是他们将单击的 URL。

示例:页面显示文章列表。每篇文章旁边都有一个单独的 Like 按钮。当一个人“喜欢”文章 B 时,它会显示在他们的 FB 流中。当他们点击信息流中的“文章 B”时,应该会转到仅显示文章 B 的页面。

此外,Facebook 将查询文章 B 的 url,以获取单个项目(图像、分类等)的 FB 元标题。

为 FB 项解析新 dom 根据您用于添加按钮等 FB 的方法,您可能需要告诉 FB 显式(重新)解析 dom 的新部分您刚刚添加了动态内容。 (你的弹出窗口。)

由于您知道添加弹出窗口的元素,因此无需告诉 FB 重新解析您的整个 dom。告诉他们从新添加/更改的元素的开头开始解析:

我使用的代码:

if (event_data) { // event_data was received, show it
  panel.setBody(event_data); // set the pop-up's body
  if (!this.ie && typeof(FB) != "undefined" && FB.XFBML)
    {FB.XFBML.parse(this.panel_el);} // Parse FaceBook markup
....

来自 FB 的文档:

【讨论】:

    【解决方案2】:

    把它放在一个for循环中,你应该没问题。

    var elements = $("#divId").html();
    $("#divId").html(elements + "like button code");
    $("#divId.fb-like").attr("data-href", "what you want to link to");
    

    请参阅 .html().attr() 规范。

    【讨论】:

    • 点击项目我这样做:'window.location.href=window.location.href + "#id=" + propertyid;'所以每个项目都有他自己的 URL,而不是我尝试将 window.location 从 like 按钮传递给 data-href,但由于某种原因,它总是发送原始 window.location.href(没有这个新部分 #id=12345),但是当我使用 'alert(window.location.href)' 我得到它 #id=12345
    • @hullfan ...什么?请编辑您的问题以包含此信息,并使用正确的格式。另外,据我了解,在这种情况下您没有使用 jQuery,尽管它可以为您节省大量时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2011-07-03
    相关资源
    最近更新 更多