#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. Я действительно не знаю, нужно ли вам это делать, но, по крайней мере, исключите это как не решение.