2015-09-28 1 views
0

У меня есть кнопка Facebook на моей странице. Он вызывает всплывающее сообщение.Facebook Share Всплывающие кнопки останавливаются, чтобы работать после первого щелчка

Проблема в том, что кнопка работает только при первом нажатии. Второй, третий клик ничего не делает. Мне всегда нужно обновить страницу.

Я новичок. Не могли бы вы помочь мне с этим кодом?

спасибо.

<div id="fb-root"></div> 
    <script> 
     window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : 'zzzzzzzzzz', 
      status  : true, 
      cookie  : true, 
      xfbml  : true 
     }); 

     FB.ui(
      { 
      method: 'feed', 
      name: 'Bitcoin Catcher Faucet & Rotator', 
      link: 'http://bitcoin-catcher.com', 
      picture: 'http://bitcoin-catcher.com/wp-content/uploads/2015/08/icon.png', 
      caption: 'Only 1000+ Rewards Faucet & Rotator', 
      description: 'Earn FREE Bitcoins Easier & Faster! Only 1000+ Rewards per Claim!' 
      }, 

      function(response) { 
      if (response && response.post_id) { 
    unhide('claim', ''); 
      } else { 
      } 
      } 
     ); 

     }; 

    function fb_callout() { 

     (function(d){ 
      var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
      if (d.getElementById(id)) {return;} 
      js = d.createElement('script'); js.id = id; js.async = true; 
      js.src = "//connect.facebook.net/en_US/all.js"; 
      ref.parentNode.insertBefore(js, ref); 
      }(document)); 
     } 
    </script> 

<img alt="Share on Facebook" src="http://bitcoin-catcher.com/wp-content/uploads/2015/09/facebook-share-button.png" width="180" onclick="fb_callout();" style="cursor: pointer;" /> 

ответ

1

Вызов FB.ui должен быть вне fbAsyncInit. Поместите его в обработчик события клика кнопки «Поделиться».

В вашем образце кода FB JS SDK - , загружаемый каждым нажатием. Это не то, что вы хотите.

Несмотря на то, что он работает впервые, поскольку SDK вызывает fbAsyncInit после его загрузки, который в свою очередь - в вашем примере, ошибочно снова - отображает диалог фида через вызов FB.ui, перезагрузка SDK прерывает API для последующего звонки. SDK не следует загружать каждый раз.

Вместо этого вы должны загрузить SDK только один раз, когда страница загружается (она асинхронна, поэтому она не блокирует браузер), а затем назначает обработчик кликов кнопке, которая вызывает FB.ui.

Он выглядел бы нечто подобное ниже

<body> 
<img alt="Share on Facebook" onclick="fb_callout();" /> 

<script> 
    // Handler for click event 
    function fb_callout() { 
    FB.ui({...}, function(response) {}); 
    } 

    // This is called when the SDK js file is loaded by the browser 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'zzzzzzzzzz', 
     status  : true, 
     cookie  : true, 
     xfbml  : true 
    }); 
    } 

    // This loads the FB SDK js 
    (function(d){ 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
    }(document)); 
</script> 
</body> 
+0

Marekful. Я изменил код таким образом, и он не работал. На этот раз первый клик остановился и для работы. Не могли бы вы привести пример кода? – Rafael

+0

Пожалуйста, взгляните на новый код, который я опубликовал сейчас ... – Rafael

+0

Просто сделайте это, как в моем ответе. Посмотрите внимательно. Вы все еще помещаете все в функцию fb_callout;) – marekful

0

я так и ничего не происходит ...

<img alt="Share on Facebook" src="http://bitcoin-catcher.com/wp-content/uploads/2015/09/facebook-share-button.png" width="180" onclick="fb_callout();" style="cursor: pointer;" /> 

<div id="fb-root"></div> 
<script> 

function fb_callout() { 

    FB.ui(
     { 
     method: 'feed', 
     name: 'Bitcoin Catcher Faucet & Rotator', 
     link: 'http://bitcoin-catcher.com', 
     picture: 'http://bitcoin-catcher.com/wp-content/uploads/2015/08/icon.png', 
     caption: 'Only 1000+ Rewards Faucet & Rotator', 
     description: 'Earn FREE Bitcoins Easier & Faster! Only 1000+ Rewards per Claim!' 
     }, 

     function(response) { 
     if (response && response.post_id) { 
unhide('claim', ''); 
     } else { 
     } 
     } 
    ); 

    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'xxxxxxxxxxx', 
     status  : true, 
     cookie  : true, 
     xfbml  : true 
    }); 

    (function(d){ 
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
     if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     ref.parentNode.insertBefore(js, ref); 
     }(document)); 
    } 

    }; 


</script>