【问题标题】:Changing meta-tags dynamic with jQuery使用 jQuery 动态更改元标记
【发布时间】:2011-11-10 15:49:15
【问题描述】:

这些是我的元标记:

<meta property="og:image" content="assets/css/gfx/skold.png"/>
<meta property="og:title" content="Den historie hjemmesiden for Norges Golfforbund"/>
<meta property="og:description" content="Her finner du alle de historie tingene som har skjedd i Norges golfhistorie gjennom tidene" />
<meta property="og:url" content="http://###"/>
<meta property="og:site_name" content="Norges Golfklubb"/>
<meta property="og:type" content="sport"/>

我正在尝试使用以下代码动态更改它们:

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

但我不断收到语法错误,无法识别的表达式:Firebug 中的 [property=og:title]。

使用最新版本的 jQuery。有谁知道我做错了什么?

【问题讨论】:

  • 如果这是供 Facebook 抓取的,请记住,如果您使用 JavaScript 更新它们,Facebook 将无法访问修改后的值。
  • 好吧。它们有默认值,但网页完全由 Ajax 和 Javascript 组成,所以我必须更改其他信息才能将正确的内容分享到 Facebook。
  • 您需要一个永久链接的默认值,不能为 facebook 动态生成 OG 标签,当您尝试在 FB 评论/分享框中链接它时,它将始终返回默认值或为空.
  • 有什么办法可以让它工作吗?我看到人们说他们可以让它在 php 页面上运行,但我有一个 html 页面,它可以获取 ?id=whatever 并使用 JQuery 和 ajax 进入城镇。有什么命令可以让 facebook 识别这些新值吗?

标签: jquery html meta-tags


【解决方案1】:

我认为你应该逃避: 看看documentation 不需要“:”。

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

【讨论】:

  • 也可以用单引号括起来。
  • 'og:title' 应该用单引号
  • @Relic 它无论如何都可以工作,无论如何我都改为使用单引号
  • 请注意,如果您正在检查这是否有效,您应该检查 DOM,因为视图源不会反映更改。
  • @GayanDasanayake 无论如何,它也可以在源代码上更改。因为当我在 fb 上分享页面时,它需要旧的 og:image,而不是新的更新。
【解决方案2】:
$("meta[name='og:title']").attr('content', 'my new title');

在 Chrome 中无法使用“property=”

【讨论】:

    【解决方案3】:

    你可以给每个元元素一个 ID 或 Class。

    $('#metaelement').attr('content', 'my new meta description');
    

    【讨论】:

      【解决方案4】:

      确保你的报价是这样的:

      $('meta[property="og:description"]').attr('content',"$modified_desc" );
      

      【讨论】:

      • 这对于您要完成的工作来说是正确的,即使最终结果仍然相同,所以您解决的是症状而不是问题。
      猜你喜欢
      • 2013-10-06
      • 2022-01-21
      • 1970-01-01
      • 2014-10-20
      • 2015-09-03
      • 2020-01-04
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多