Я успешно диагностировал и решил эту проблему.
Вот мой код, который асинхронно загружал Facebook JavaScript SDK:
(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";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
Вот мой код, который его инициализировал:
FB.init({
appId: {APP_ID},
status: true,
cookie: true,
xfbml: true,
oauth: true
});
Обратите внимание, что я действительно запрашивал синтаксический анализ XFBML дважды: один раз при загрузке JavaScript SDK (#xfbml=1
) и один раз при его инициализации (xfbml: true
).
Это вызывает ошибку, которая препятствует рендерингу тегов comment-count
.
Решение состоит в том, чтобы исключить одно из этих двух заявлений; Я бы предложил удалить #xfbml=1
из конца URL-адреса JavaScript SDK, поскольку запрос синтаксического анализа XFBML во время загрузки кажется устаревшим .
Мой загрузчик теперь выглядит так:
(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";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
И все отлично работает.
Синхронная загрузка
Если вы загружаете JavaScript SDK синхронно, измените это:
<script src="//connect.facebook.net/en_US/all.js#xfbml=1"></script>
На это:
<script src="//connect.facebook.net/en_US/all.js"></script>