0

我创建了一个视频页面,当文件存储在服务器上时,它使用数据库动态加载视频。页面上预加载了一个视频,该数据可以毫无问题地被点赞并发布到 Facebook。单击新缩略图时,我希望 Facebook Like 信息更改为新的视频内容(标题、网址和图像)。我一直在寻找解决方案,并且有很多类似的解决方案,但是他们简单的添加解决方案FB.XFBML.parse();对我不起作用。当 Ajax 调用成功返回时,我会更新我的元标记:

$("meta[property=og\\:title]").attr('content', videoTitle); 
$("meta[property=og\\:url]").attr('content', "www.mySiteURL.com/index.php?videoID="+videoID);
$("meta[property=og\\:image]").attr('content', "www.mySiteURL.com/images/video/"+videoImageName);

但是当我在这些设置后立即运行解析代码时,我看到按钮刷新但它仍然具有相同的内容。我可以看到元标记实际上是使用 Firebug 更新的。只是 FB 按钮没有正确地重新抓取页面信息以发送到 FB。我在我的 html 标记中设置了命名空间,并且还设置了其他 og:metas,但这些是我需要重新抓取的三个。

我在一篇帖子中看到有人ajax.complete(function(){FB.XFBML.parse();});直接在主页上使用了类似的东西,我不记得确切的代码,但想法是一样的,但它仍然没有工作。我认为只要在我的 ajax 函数中运行它就足够了。

我错过了什么吗?

任何帮助将不胜感激!

谢谢。

编辑:我应该补充一点,每个视频都有自己的直接 URL,该 URL 插入到 og:url 中,因为它们都是通过 ajax 加载的。当我使用其中一个唯一的 URL 时,Facebook Linter/Object Debugger 会向我显示每个视频的所有正确数据,这只是一个抓取问题 - 至少,在我对此的了解有限的情况下,这对我来说似乎是这样。

4

3 回答 3

1

听起来您可能一直在动态更改当前页面的元标记-这不是必需的,并且会导致 Facebook 的抓取出现问题(您可以使用Facebook 的调试工具进行验证)-

为每个对象维护一个静态 URL,从该 URL 提供元标记(如果需要,您可以重定向其他浏览器)并在动态页面上更改 Like 按钮本身以指向当前显示的对象的 URL(即删除like按钮,添加一个新的 fb:like 标签并重新调用FB.XFBML.parse();

于 2012-11-13T22:05:40.083 回答
1

我应该补充一点,每个视频都有自己的直接 URL,该 URL 插入到 og:url 中,因为它们都是通过 ajax 加载的。当我使用其中一个唯一的 URL 时,Facebook Linter/Object Debugger 会向我显示每个视频的所有正确数据,这只是一个抓取问题 - 至少,在我对此的了解有限的情况下,这对我来说似乎是这样。

不,这不是抓取问题——因为抓取器不关心您的 JavaScript,因此永远不会看到您更新的元标记client-side。它向您的服务器发出 HTTP 请求,因此您在当前显示页面的任何类型的客户端中执行的操作绝对无关紧要。

您需要做的是更新赞按钮指向的目标 URL:将现有的赞按钮替换为新的赞按钮代码,并使用包含当前视频页面 URL 的 href 属性,在其上运行 FB.XFBML.parse - 然后它会按预期工作。

于 2012-11-13T22:51:22.480 回答
0

您可能应该FB.XFBML.parse();在更新元标记后调用,这会导致 FBML 标记再次呈现。

更多信息在FB.XFBML.parse();这里

于 2012-11-13T22:12:02.590 回答