使用JQuery更改Facebook元标记内容属性

11

我想知道如何使用jQuery来替换我的Facebook meta标签的内容属性。

我在StackOverflow上进行了搜索,找到了以下示例:

$("meta[property=og:title]").attr("content", title);
$("meta[property=og:url]").attr("content", url);

我的代码中有以下元标记:

<meta property="og:title" content="some content"/>
<meta property="og:url" content="some content"/>
<meta property="og:site_name" content="some content"/>
当我运行应该改变“title”和“url”变量内容的函数时,变化没有发生。'content'的值仍然保持不变。
我想知道如何(如果可能)使用jQuery更改Facebook的元标签的值。
3个回答

25

这是对我有效的方法:

$('meta[name=og\\:url]').attr('content', newVideoUrl);

注意双反斜杠,如果没有它,Jquery将会报错。


这就是我在寻找的答案。谢谢! - WispyCloud
@jtblin - 对不起 - 是我的错误。 - Karol
4
当我尝试使用你的标记语言时,它确实改变了 HTML。但是 Facebook 仍然选择我的旧内容。我不认为 Facebook 会考虑 JavaScript。您能否验证 Facebook 是否实际上显示了您通过 jQuery 应用的正确内容? - Wesley Smits
2
我的元标签使用了“property”而不是“name”,所以我不得不编写$('meta[property=og\:url]').attr('content', newVideoUrl);。 - kodvin
2
实际上应该是“属性”而不是“名称”。 - Pedro Ferreira

15
使用jQuery可以更改meta标签,但我不认为这会实现你想要的效果,因为meta标签是通过Facebook爬取器获取的。 Facebook爬取器会去抓取您的页面以读取meta标签。

编辑Meta标签

您可以通过更新页面的标签来更新页面的属性。请注意,og:title和og:type仅在初始时可编辑 - 在页面获得50个赞之后,标题将被固定, 在页面获得10,000个赞之后,类型将被固定。这些属性被固定以避免已喜欢页面的用户受到惊吓。超过这些限制后更改标题或类型标签无效,您的页面保留原始标题和类型。

要在Facebook上反映更改,必须强制抓取页面。当页面管理员点击“赞”按钮或将URL输入Facebook URL Linter时,页面才会被抓取。您可以通过cURL命令程序化地强制抓取页面。例如...

https://developers.facebook.com/docs/opengraph/


只是想知道是否可以使用JavaScript来设置这些属性。这将要求爬虫在读取属性之前在页面上执行JavaScript。这很可能吗? - Gervase
当我检查Facebook或他们的调试工具时,它们似乎确实没有使用JavaScript。 - Wesley Smits

10

Facebook的爬虫程序不会执行JavaScript。

因此,使用Javascript修改元标记以显示不同的共享内容是无效的。

您需要使用服务器端代码根据需要在HTML源代码中编写它们。


1
是的-我也没看到它会很快改变。 - elMarquis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接