многие фейсбук как кнопки на странице, асинхронно - PullRequest
2 голосов
/ 09 февраля 2011

Я строю стену людей, которые написали сообщения на нашем сайте. Для каждого сообщения я хочу добавить кнопку «Мне нравится» на Facebook. Но реализация Facebook состоит в том, чтобы включить тег script перед созданием тега fb: like.

 <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
      <fb:like href="http://example.com/MessageWall.aspx/Fan/222" 
            show_faces="false" width="250">
 </fb:like>

Я попробовал этот подход, но поскольку я показываю 121 человека на странице за раз, производительность страницы, скажем так, ниже номинала. Я не могу поверить, что мне нужно каждый раз включать тег script.

Сейчас я пытаюсь реализовать асинхронный способ сделать это.

Я пробовал это:

    (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js#xfbml=1';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(e, s);
    }());

    var firstHalfOfLikeButton = '<fb:like href="http://example.com/MessageWall.aspx/Fan/';
    var secondHalfOfLikeButton = '" layout="button_count" show_faces="false" width="250"></fb:like>';
    var userId, divId;
    for (var x=0; x<listOfIdsOfActiveTiles.length; x++) {
        userId = listOfIdsOfActiveTiles[x][0];
        divId= listOfIdsOfActiveTiles[x][1];
        $("div#" + divId+ " .hbo-message").append(firstHalfOfLikeButton + userId + secondHalfOfLikeButton);
    }

Я также пытался асинхронно присоединить all.js к корню fb, как это ПРЕЖДЕ ЧЕМ перебирать и прикреплять тег fb: like к каждому местоположению.

 (function() {
    var e = document.createElement('script'); e.async = true;
     e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js#xfbml=1';
         document.getElementById('fb-root').appendChild(e);
 }());

Я также попытался перебрать и создать тег fb: like, а затем прикрепить файл all.js.

Обновление: в каждом случае я вижу, что тег

У кого-нибудь есть идеи?

Спасибо, Скотт

UPDATE

Возвращаясь к этой странице, спустя некоторое время, но я закончил тем, что динамически создал кнопку «Мне нравится» для изображения каждого человека при нажатии элемента. Итак, мой код onclick проверяет, нет ли его там, и если нет, строит его, используя строительные блоки, которые у меня есть выше.

Таким образом, мне не нужно создавать 121 аналогичные кнопки при загрузке страницы. Вместо этого я создаю их по требованию.

Вы можете увидеть готовый проект на honeybunchesofoats.com

1 Ответ

1 голос
/ 09 февраля 2011

Вам нужно включить скрипт facebook только один раз, а не один раз для каждой кнопки «Нравится». Затем он выполнит поиск на странице всех элементов xfbml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...