HTML5 — способ: FB не определен

#facebook #facebook-javascript-sdk

#Facebook #facebook-javascript-sdk

Вопрос:

это мой код — это новый HTML5-способ включения JS-FB-Api:

     <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/de_DE/all.js#xfbml=1amp;appId=XXXXXXXXXXXXXXXXX";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
    </script>
  

Это работает хорошо .. для кнопок «Нравится» и чего-то еще. Но если я хочу использовать FB.Событие.подписка..:

     window.fbAsyncInit = function() {
        FB.Event.subscribe('edge.create', function(response) {
            $('#head h1 a').text('liked');
        });
        $('#head h1 a').text('loaded');
    }
  

…Firebug сказал мне, что FB не определен. Но окно.fbAsyncInit был успешно запущен.. итак, в чем проблема?

Спасибо за ответы и извините за мой плохой английский!

Ответ №1:

У меня была такая же проблема, я мог бы использовать ее с Firefox, хотя FireBug указывал на некоторую ошибку. Я не мог использовать его с Chrome, и его консоль сообщила, что FB не определен. Затем я попробовал это так, и это работает:

 window.fbAsyncInit = function() {
/* FB Likes */
FB.Event.subscribe("edge.create",function(response){
    $.ajax({
        /* bla bla */
    });
});
FB.Event.subscribe("edge.remove",function(response){
    $.ajax({
        /* bla bla */
    });
});
};
(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/bs_BA/all.js#xfbml=1amp;appId=MY-APP-ID";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
  

И это работает, никаких ошибок, таких как уже вызванный FB.init или что-то в этом роде 🙂

Ответ №2:

Я использую интеграцию Facebook на основе HTML5 на сайте, который также использует jQuery.

Мой код немного отличается от вашего, и, возможно, различия имеют значение:

 if ($("#fb-root").length>0) {  
  // no window.fbAsyncInit w/o <div id="fb-root" /> being present in DOM

  // call FB.init() first
  FB.init(...); // you should pass the arguments you need for this

  // call other stuff after FB.init()
  FB.event.subscribe(...); // you should pass the arguments you need for this
}
  

Комментарии:

1. Итак, я должен использовать FB.init с моим FB-App-ID? Я подумал, что этого достаточно, когда я ввел свой идентификатор приложения в строку: js.src = «//connect.facebook.net/de_DE/all.js#xfbml=1amp;appId=XXXXXXXXXXXXXXXXX «;

2. Я действительно не знаю, нужно ли вам это делать, но, по крайней мере, исключите это как не решение.