Facebook как: Uncaught TypeError: Object # <a Object> не имеет метода 'предоставить' - PullRequest
4 голосов
/ 24 июня 2010

Я недавно добавил кнопку «Мне нравится» на Facebook, но следующий код возвращает ошибку в Chrome: Uncaught TypeError: У объекта # нет метода «обеспечить»

<!-- Facebook -->
<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({appId: '121814204514513', status: true, cookie: true,
             xfbml: true});
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>
<!-- Facebook -->

Кнопка «Мне нравится» работает, но ошибкараздражает, кто-нибудь знает, как это решить?

Спасибо

Ответы [ 3 ]

7 голосов
/ 27 апреля 2011

Недавно у меня возникла та же проблема, когда я пытался внедрить http://connect.facebook.net/en_US/all.js в Google Reader (для этого захватывающего конкурса кодирования Kynetx: http://code.kynetx.com/2011/04/26/250-to-build-kynetx-facebook-send-within-24hrs-ends-apr-27th/).all.js начинается с "if (! window.FB) window.FB = {..." и объявляет метод 'provide'.В google reader объект FB уже присутствовал (не знаю, почему и как он был создан), поэтому код внутри if никогда не выполнялся.Уловка, которую я использовал, состояла в том, чтобы установить FB на ноль, прежде чем включать "http://http://connect.facebook.net/en_US/all.js". Google Reader не жаловался. Это может быть решением и в вашей ситуации. Обновление: вам может потребоваться установить FB на ноль следующим образом:

var head = $("head").get(0);  // using jquery
var script2 = document.createElement("script");
script2.innerHTML = "window.FB = null;FB=null;";
head.appendChild(script2);
2 голосов
/ 08 февраля 2012

Хотя код, предоставленный Loic Devaux, сделает то, что вам не нужно, в вашем случае.Он решает проблему с разметкой, показанной на стороннем веб-сайте ...

У меня была такая же проблема, и я сначала добавил этот код для ее решения.Тогда я подумал, что должно быть что-то не так, и я не все делал правильно.Я добавил поле для комментариев в Facebook на страницу, на которой уже была кнопка «Поделиться».Поэтому я просто переместил скрипт общего доступа после скрипта инициализации, и ошибка исчезла.

Мой совет - проверить, есть ли у вас более одного виджета FB на ваших страницах.Если это так, прочитайте документацию и убедитесь, что вы добавили правильные сценарии в нужном месте.

1 голос
/ 23 февраля 2012

Решение Лоика не работает в IE. Вместо этого вы должны сделать это:

var head = $("head").get(0);  // using jquery
var script2 = document.createElement("script");
if (!$.browser.msie ) {
    script2.innerHTML = "window.FB = null;FB=null;";
}else{
    script2.text = "window.FB = null;FB=null;";
}
head.appendChild(script2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...