使用 jQuery 动态更改元标记

Posted

技术标签:

【中文标题】使用 jQuery 动态更改元标记【英文标题】:Changing meta-tags dynamic with 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 识别这些新值吗? 【参考方案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" );

【讨论】:

这对于您要完成的工作来说是正确的,即使最终结果仍然相同,所以您解决的是症状而不是问题。

以上是关于使用 jQuery 动态更改元标记的主要内容,如果未能解决你的问题,请参考以下文章

Vue-Head => 如何异步更改元函数中的信息

使用 pig 更改元组

在 pine 脚本中使用循环时更改元组值

如何在不创建新文件的情况下使用 ffmpeg/avconv 更改元数据?

jquery 动态添加的元素 怎么删除元素

如何在 linux 上更改元数据库的访问端口?