HTML5 - путь: FB не определен - PullRequest
       6

HTML5 - путь: FB не определен

0 голосов
/ 27 октября 2011

это мой код - это новый 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=1&appId=XXXXXXXXXXXXXXXXX";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
    </script>

Это хорошо работает ... для кнопок "Мне нравится" и для чего-то еще. Но если я хочу использовать FB.Event.subscribe ..:

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

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

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

Ответы [ 2 ]

1 голос
/ 30 мая 2012

У меня была такая же проблема, я мог использовать ее с 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=1&appId=MY-APP-ID";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

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

0 голосов
/ 27 октября 2011

Я использую интеграцию 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
}
...