私はこれにかなり慣れていないので、これが簡単な質問であれば申し訳ありません。
私は私のウェブサイトにボックスのような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.
ドキュメントがHTMLではなくXMLとして解釈されているようです。 XMLはHTMLよりもはるかに厳密です-ルールの1つはアンパサンド(&
)には特別な意味があります。特殊文字である「XMLエンティティがここに来る」という意味です。たとえば、"
を挿入するには"
、または>
は、>をドキュメントに挿入します。
この場合、コードは&version
これらのエンティティの1つの開始として6行目で。次のように6行目を更新すると、
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0";
次に、エラーが消えるはずです。
ちょうど私自身がこの問題を抱えていました。上記の答えは問題を解決しませんでした。 Facebookボタンが読み込まれません。以下は、サーバーに表示される500エラーの両方を解決し、ボタンを適切にロードできるようにするために実装した修正です。
問題は、XMLを使用するThymeleafのようなものを使用している場合です。ページに追加されるHTMLは適切に形成されている必要があります。 &を使用すると、ページ内で現在のバージョンが使用されている場合、ページの読み込みが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>
タグのすぐ下にコードを配置しましたか?それを配置する必要があるのはそのためです。