如何使用jQuery将HTML追加到<head>中

5

我正在尝试将一个Facebook开放图谱标签(基于页面上动态生成的内容)附加到我的HTML头部。

 $(document).ready(function(){
var stat = $('#random-message').text();
stat = jQuery.trim(stat);

//set facebook Open Graph description
$('head').append('<meta property="og:description" content="'+stat+'"/>');

  });

单独运行正常。 JSFiddle

但当与下面的动态加载Twitter脚本结合使用时:

$(document).ready(function(){
var stat = $('#random-message').text();
stat = jQuery.trim(stat);
//set tweet button data text
$('a.twitter-share-button').attr('data-text',stat);

//set facebook Open Graph description
$('head').append('<meta property="og:description" content="'+stat+'"/>');

//insert twitter API Script - problematic
$('#tweet-like').append('<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>');

});

IT出了点问题。在js fiddle中,它向正文中插入了一些特殊字符,导致其余的脚本(包括插入meta标签)无法运行。奇怪的是Twitter脚本“widgets.js”在我的页面上能够工作,但meta标签却没有出现。


1
类似的问题可以在这里找到:http://stackoverflow.com/questions/4032630/append-html-to-head-with-jquery - Mike Eng
头部只是另一个标签,追加不应该有问题。 - amosrivera
2
请问您为什么需要在页面加载后附加这个?当Facebook最初在头部查找meta标签时,如果找不到它,那么在此之后加载它是否无关紧要? - The_Butcher
如果一开始就在头部加载它会有什么伤害呢? - The_Butcher
没有在一开始就加载它也没有关系,但基于我已经开始构建的方式,这样做更简单...我明白了,根据Guffa的答案 - 我可能需要通过php来实现这个。 - Mike Eng
显示剩余3条评论
1个回答

7

Facebook不使用当前页面中的meta标签,它会重新请求页面并解析它。由于解析过程不涉及运行页面中的任何Javascript,因此它不会将meta标签添加到读取的数据中。

为了使meta标签起作用,它必须从一开始就存在于页面中,不能使用客户端脚本添加。


似乎https://dev59.com/MVsX5IYBdhLWcg3wDr88#34284383认为通过客户端JavaScript更改的Open Graph标签不会被解析。 - Ryan

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