0

ページの 1 つで 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;

URLでさえそれは言います。

ただし、アンパサンド記号を次のように変更すると:

&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>

JavaScriptの多くは、XHTMLパーサーによって正しく解釈されません。CDATAでエスケープする必要があります。

于 2012-04-05T04:40:23.423 に答える