2012-04-05 14 views
0

私のページの一部でFacebookコードを使用しようとしています。Facebook Connectコードの1文字のために検証に失敗しました

コードは次のとおりです。私はXHTML + RDFaのページとしてこれを検証しようとすると、

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

は、しかし、私はエラーを取得します。このエラーは、この部分の&記号 "xfbml = 1 & appId"によって発生します。それが言う

&amp; 

でもURLで:WC3のバリデータが使用することをお勧めします。私はアンパサンド記号を変更したとき

しかし、:

&amp; 

スクリプトが動作しなくなります。

これを正しく動作させて検証する方法はありますか?あなたは、それはそうのように、CDATAタグ内のコードをラップすることによって検証するために得ることができる必要があります

+1

これは、文字データセクション(CDATA)のためのものです。参照:[スクリプトタグ内でCDATAセクションが必要な場合はいつですか?](http://stackoverflow.com/questions/66837/when-is-a-cdata-section-necessary-within-a-script-tag) – miku

答えて

2

:JavaScriptを多く

<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> 
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パーサによって正しく解釈されません。 CDATAでエスケープする必要があります。

+0

答えをありがとう。それはあなたの直前に投稿されたrjzと同じソリューションなので、私はその答えを受け入れられた答えとしてマークします。しかし、助けてくれてありがとう:) –

+0

私はこの答えをマークします。 –

+1

これは、CDATAをコメントアウトする理想的な方法です – Maverick

関連する問題