2016-03-23 4 views
1

У меня есть комментарии FB и кнопка совместного использования FB, реализованная на странице блога. Комментарии FB редко загружаются в первый раз, когда я прихожу на страницу своего блога. Когда я обновляю страницу, происходит одна из пяти вещей: 1) страница загружается без комментариев (большую часть времени); 2) загрузка страницы с комментариями; 3) FB не определен; и время от времени я получаю 4) init не вызывается с допустимой версией. Если я обновляюсь дважды быстро, иногда страница вообще не обновляется и просто вернет пустую страницу. В поисках этого решения я смотрел на почти все сообщения на переполнение стека, связанных с этим разговором, включая: facebook comments plugin showing only after refreshКомментарии Facebook загружаются непоследовательно с Angular Fullstack

Я не знаю, что turbolinks есть, но я думаю, что это что-то делать с RoR, и это проект Angular Fullstack. В моей index.html:

<body ng-app="theApp"> 
    <div id="fb-root"></div> 
    <script> 

     window.fbAsyncInit = function() { 
      FB.init({ 
      appId  : 'MyApp', 
      xfbml  : true, 
      version : 'v2.5' 
      }); 
     }; 

     (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 = "https://connect.facebook.net/en_US/sdk.js"; 
      fjs.parentNode.insertBefore(js, fjs); 
     }(document, 'script', 'facebook-jssdk')); 
    </script> 

На мой comments.html:

<div class="fb-comments" data-href={{webAddress}} data-width="100%" data-numposts="10"></div> 

На мой comments.controller:

angular.element(document).ready(function() { 
     FB.XFBML.parse(); 
    }); 

Это решение делает мою кнопку FB доля прийти без обновить (моя последняя проблема), но он оставляет меня без комментариев, появляющихся до тех пор, пока не будет добавлено дополнительное обновление.

ответ

1

После нескольких экспериментов я наконец получил комментарии, чтобы приступить к загрузке первой страницы. Существует некоторая проблема, когда я перехожу на другую страницу (например, в наши социальные сети), а затем быстро ударяю назад, говоря: «FB не определен». Бонусные очки для тех, кто оставляет лучший ответ. Вот код, который я нашел, что получил загрузку страницы в первый раз:

Моего index.html:

<body ng-app="theApp"> 
    <div id="fb-root"></div> 
    <script> 

    window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : 'MyApp', 
     xfbml  : false, //this was true before, 
     version : 'v2.5' 
     }); 
    }; 

    (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 = "https://connect.facebook.net/en_US/sdk.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 

Моего comments.html:

<script> 
    FB.XFBML.parse(); 
</script> 
<div class="fb-comments" data-href={{webAddress}} data-width="100%" data-numposts="10"></div> 

Моего comments.controller.js :

angular.element(document).ready(function() { 
     FB.XFBML.parse(); 
    }); 

Я рад, что он «работает», но учитывая избыточность FB.XFBML.parse() в comments.html и комм ents.controller.js и тот факт, что страница выйдет из строя, когда вы нажмете назад после перехода на другую страницу, чтобы быстро я оказался неудовлетворенным. Если у кого-то есть лучший ответ, я бы хотел его услышать.

Смежные вопросы