我对此很新,很抱歉,如果这是一个简单的问题。
我正在尝试将FB框安装到我的网站www.thehungryeurasian.com
上但是,当我尝试插入Javascript SDK时:
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
出现以下错误:
Error parsing XML, line 884, column 64:
The reference to entity "version" must end with the ';' delimiter.
答案 0 :(得分:39)
看起来有些事情是将您的文档解释为XML而不是HTML。 XML比HTML更严格 - 其中一个规则是&符号(&
)具有特殊含义。他们的意思是&#34;这里有一个XML实体&#34;,这是一个特殊的角色。例如,您可以键入"
以插入"
,或>
以插入&gt;进入你的文件。
在这种情况下,您的代码将第6行的&version
解释为其中一个实体的开头。如果您按如下方式更新第6行:
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0";
然后你会发现错误消失了。
答案 1 :(得分:4)
我自己就是这个问题。上面的答案没有解决问题。 Facebook按钮无法加载。下面是我实现的解决方案,用于解决服务器上显示的500错误,然后允许正确加载按钮。
问题在于,如果您使用的是像Thymeleaf这样使用XML的东西。必须正确形成添加到页面的HTML。 &amp;如果在页面中使用当前版本,将导致页面加载失败并显示500错误。
包含按钮的Javascript SDK的当前方法。关注我们,喜欢等...
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.3";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
使用更严格的XML检查所需的增强功能。此增强功能将允许正确转义XML数据,并为旧版浏览器评论CDATA。
<div id="fb-root"></div>
<script>
/* <![CDATA[ */
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.3";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
/* ]]> */
</script>
答案 2 :(得分:0)
您是否将代码放在标签下? 因为那是需要放置的地方。