Facebook комментарии, генерирующие ошибку JavaScript - PullRequest
0 голосов
/ 28 сентября 2011

У меня ошибка javascript во всех браузерах в локальном И онлайн при использовании комментарии Facebook .
Попытка получить 0 или несколько комментариев, похоже, ничего не меняет.
У кого-нибудь есть идея?

Сообщение об ошибке

Сообщение: 'this._count.value.0' равно нулю или не является объектом.
All.js, строка: 48, код: 0
URI: http://connect.facebook.net/en_US/all.js#xfbml=1

Код на странице

<fb:comments-count href="<%= WebTools.Permalink %>"></fb:comments-count>
<fb:comments href="<%= WebTools.Permalink %>" num_posts="2" width="839"></fb:comments>

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Я успешно диагностировал и решил эту проблему.

Вот мой код, который асинхронно загружал 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>
0 голосов
/ 04 октября 2011

Я на самом деле узнал, что это проблема в конце Facebook .Тот же код работает в dev и prod, но не в локальном или промежуточном ...

Для получения дополнительной информации Есть сайт, объясняющий это в деталях:http://www.codepreneur.com/2011/07/facebook-like-button-not-working-or-resets-itself/

...