使用 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 动态更改元标记的主要内容,如果未能解决你的问题,请参考以下文章