【问题标题】:Changing meta facebook og with jQuery用 jQuery 改变 meta facebook og
【发布时间】:2014-03-24 19:10:27
【问题描述】:

我有一个问题(显然), 我已经完成了一个在 AJAX 中发送数据的表单。 当请求成功时,我会从请求中获取返回值,并将其附加到 og 标记内容中。 例如

$('meta[property="title"]').attr('content', data.title);

当我在我的 chrome 控制台中检查 Elements 之后,这些更改就完成了。 但是如果我点击 Facebook 分享按钮,它并不关心我的更改...... 最后,我要更改的只是og标签的标题、描述和图像。

有什么解决办法吗? 谢谢大家。

【问题讨论】:

  • 你需要在服务器端生成这个HTML。 Facebook 的 HTML 解析器不会运行脚本。
  • 你的意思是我不能使用 AJAX 实现它?该死的..或者你的意思是我必须在 php 中创建我的元元素,但我仍然可以使用 AJAX,但是我没有设置元 og 内容,而是附加元 entierly?
  • 我的意思是 Facebook 将使用他们自己的服务器请求您提供给它的 URL,并解析该请求吐出的任何 HTML。它不会运行 any 脚本或做任何其他事情。您需要想出一种适用于此设计的方法。
  • 哦,我明白了,当我点击 FB 分享时,它会请求我提供的 url,但显然它不会关心我的更改,因为这是一个新请求......好吧,所以我只是不能像你首先说的那样在 AJAX 中实现,我应该在服务器端管理它。感谢 Mike 的帮助。
  • 你应该给出一个真实的答案,我可以将其标记为已解决;)

标签: javascript jquery facebook facebook-opengraph


【解决方案1】:

当一个页面在 Facebook 上被喜欢引用时,Facebook 从他们的一端请求 URL,下载 HTML,并使用非常 简化的 HTML 解析器,用于查找 OpenGraph 标记。

因此,只有服务器直接生成的 HTML 才会被 Facebook 看到。嵌入在 HTML 中的任何 JavaScript 都不会运行,也不会加载页面引用的任何资源。

您需要想办法通过操纵 URL 来传达信息;例如添加 URL 参数、为内容分配永久链接、在 Web 服务器上使用重写规则等。

【讨论】:

    【解决方案2】:

    一个 URL 只能有一个 opengraph 描述。但是,您可以添加一些变量以根据内容更改 opengraph 标签。假设您有一个页面 www.example.com 并且想要共享一些实体。如果您有用户,您可以分享 www.example.com?user=[id] 并设置服务器端代码来执行此操作:

    if (isset($_GET['user'])) {
       // Opengraph for user
       // Perhaps you wanna load the user and show his infos.
    }
    if (isset($_GET['team'])) {
       // opengraph for team
    }
    else {
       // Default opengraph
    }
    

    不要忘记 opengraph 图像必须在 DOM 中。你可以随时添加

    <div style="display: none;">
    <img src="[path to the shared image]" />
    </div>
    

    希望有帮助

    【讨论】:

    • 谢谢它很有用,但不完全符合我的要求。如果可以的话,我应该投票;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    相关资源
    最近更新 更多