我刚刚完成了一个基于ajax的小网站100%。但是我在更新facebook Like按钮的链接时遇到了问题。
我只使用了facebook生成的code,并且我包含了图元标记。当用户按下按钮时,它会加载新的YouTube视频,我会更新元标记
<meta property="og:url" content="http://www.mySite.com/"/>
以这种方式使用jQuery:
$("meta[property=og:url]").attr("content", nUrl);
nUrl是新页面网址,其中包含新随机选择的视频。
当我点击“赞”时,它只是抓住“喜欢”它只是抓住原始的og:url元标记内容,现在是由ajax设置的新内容。 如何用javascript更新像按钮网址?我做了什么错了? 谢谢
答案 0 :(得分:2)
所以这就是我为其他拥有相同问题的人解决问题的方法: 将其添加到您的网站:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:og="http://ogp.me/ns#"
xmlns:fb="http://www.facebook.com/2008/fbml" >
这会将fbml添加到您的站点。然后使用类似按钮(或评论系统,或其他)的FBML版本,因为我使用了这个:
<span id="fbLike"><fb:like href="http://www.your-site.com?v=1" send="false" layout="button_count" width="80" show_faces="true"></fb:like></span>
现在每次用户进行Ajax操作时都要有一个新的facebook按钮,只需将此jquery代码添加到客户端代码中处理此操作的位置:
var nUrl = "http://www.your-site.com?v="+toPlayId.substring(1);
$( '#fbLike' ).html('<fb:like href="'+nUrl+'" send="false" layout="button_count" width="80" show_faces="true" />');
if (typeof FB != "undefined"){
FB.XFBML.parse(document.getElementById('fbLike'));}
您基本上只需用新按钮替换按钮所在的位置即可。 nUrl是您希望新按钮指向的新链接。 你不需要一个真正的新URL只需在url中添加一个参数,这样你的ajax就会知道在找到参数时要显示的内容。 就是这样。
答案 1 :(得分:1)
不要使用AJAX或javascript修改元标记。设置服务器端脚本以便第一次正确设置它们。
当您喜欢/在Facebook上分享网址时,Facebook会向网址发出HTTP请求并解析其看到的元标记。
答案 2 :(得分:1)
您无法使用Javascript更新OG代码。 Facebook将向您的服务器发出服务器请求,并且必须返回代表该对象的OG标记。
您需要为网站上的每个对象创建一个网址,例如:
http://www.yoursite.com/video/VIDEO_ID
当您的视频页内更改使用Ajax时,您将呈现一个新的类似按钮,该按钮指向这样的URL。在没有JS的情况下访问此URL应该呈现正确的OG标记 - 这就是Facebook将如何看到您的页面。然后,您可以添加javascript重定向(window.top.location = NEW URL)以将用户重定向到基于Ajax的视频播放器。