Фид Facebook: FB.ui() работает в Firefox, но ошибка в Chrome (Safari, IE)
Я настроил пользовательскую кнопку Facebook для веб-сайта. Когда я нажимаю на эту кнопку в Firefox, она предоставляет мне хороший диалог (всплывающее окно) со всеми определенными мной переменными. Посты на моей стене в фейсбуке, все приятно! Но тот же код не работает в Chrome, Safari, IE. Во всплывающем окне выдается ошибка: "Произошла ошибка. Пожалуйста, попробуйте позже".
Javascript, который я использую (наряду с мета-тегами OG в главе, конечно): веб-сайт, на котором я использую этот скрипт: http://www.henkeningrid.org/ (кнопка "Мне нравится" активируется при нажатии на цитату)
el.find('a.facebook-feed').click(function() {
var quote = $(this).parents().find('h1').html();
var url = $(this).parents('article').attr('data-url');
var publish = {
method: 'feed',
message: '',
name: 'Henk en Ingrid',
caption: '“'+quote+'”',
description: ('De wereld volgens Henk en Ingrid.'),
link: 'http://www.henkeningrid.org/nl/quote/'+url,
picture: 'http://www.henkeningrid.org/site/gfx/fb_preview.png',
actions: [{name: 'Henk en Ingrid', link: 'http://www.henkeningrid.org/'}],
user_message_prompt: ''
};
FB.ui(publish);
//return false;
});
3 ответа
У нас возникла эта проблема и с новой версией JavaScript SDK - странно, что это происходит только в Chrome, но решение, действительно, заключалось в удалении синхронной версии SDK. Мы сохранили асинхронный код, и он исправил проблему, которую мы видели во всех браузерах.
<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/en_US/all.js#xfbml=1&appId=XXXXXX";
fjs.parentNode.insertBefore(js, fjs);
} (document, 'script', 'facebook-jssdk'));
</script>
Вероятно, потому что вы вставили SDK дважды; в заголовке и в теле, используя асинхронный метод. У меня такая же проблема. убрал строку в шапке и тут все заработало.
У меня была такая же проблема, и ваш "aync loading"- ответ указал мне в правильном направлении. Если вы используете jQuery, я предлагаю использовать обратный вызов, как описано здесь: https://developers.facebook.com/docs/javascript/howto/jquery/ Работало для меня!
$(document).ready(function() {
$.ajaxSetup({ cache: true });
$.getScript('//connect.facebook.net/en_UK/all.js', function(){
FB.init({
appId: '<?=FACEBOOK_APP_ID?>'
});
alert('FB loaded');
yourFunction();
});
});