0

我正在尝试在我的一个页面中使用一些 Facebook 代码。

代码是:

<script type="text/javascript">(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/all.js#xfbml=1&appId=000000000";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

但是,当我尝试将其验证为 XHTML+RDFa 页面时,出现错误。该错误是由这部分“xfbml=1&appId”中的&符号引起的。WC3 验证器建议使用:

&amp;

即使在它说的网址中。

但是,当我将 & 符号更改为:

&amp;

该脚本不再起作用。

有没有办法让它正常工作并仍然有效?

4

2 回答 2

2

您应该能够通过将代码包装在CDATA标签中来对其进行验证,如下所示:

<script type="text/javascript">(function(d, s, id) {
//<![CDATA[
  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/all.js#xfbml=1&appId=000000000";
  fjs.parentNode.insertBefore(js, fjs);
//]]>
}(document, 'script', 'facebook-jssdk'));</script>
于 2012-04-05T04:38:25.977 回答
2
<script type="text/javascript">
/*<![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/all.js#xfbml=1&appId=000000000";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
/*--*//*]]>*/
</script>

XHTML 解析器无法正确解释大部分 JavaScript。您需要使用 CDATA 对其进行转义。

于 2012-04-05T04:40:23.423 回答