2016-04-05 2 views
0

То, что я пытаюсь сделать, - это создать поле формы, в котором подсвечены флажки с определенным значением (целое число 7). Если количество проверенных переключателей больше 3, система заполняет диалог обмена «Facebook».Как заполнить диалоговое окно общего доступа Facebook с помощью javascript

Он работает хорошо, если ничего не происходит, но когда я закрываю всплывающее диалоговое окно и нажимаю больше переключателей, даже если число больше 3, диалоговое окно Facebook не появляется. Я подозреваю, что это проблема из-за инициализации, но я не знаю, как исправить проблему. (И потому, что я подозреваю, я не уверен, что это предположение также направляет меня к правильному решению)

Ниже приведен код моего javascript, чтобы это исправить. Я действительно надеюсь поделиться любой мыслью!

Лучшие

<script> 
    $(".evaluation").click(function(){ 
    console.log('clicked'); 
    var count = 0; 
    $(".evaluation").each(function(index,item){ 
     if (item.value == 7){ 
     if (item.checked == true){ 
      count ++; 
     } 
     } 
    }); 

    console.log('count:' + count); 

    if (count >= 3){ 

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

     FB.ui({ 
     method: 'share_open_graph', 
     action_type: 'og.likes', 
     action_properties: JSON.stringify({ 
     object:'http://www.###.com', 
     }) 
    }, function(response){ 
     // Debug response (optional) 
     console.log(response); 
    }); 
    }; 

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

); 


</script> 

ответ

1

Вы должны использовать window.fbAsyncInit и FB.init на странице нагрузки, один раз. НЕ нажимайте кнопку. Не пытайтесь загрузить и инициализировать JavaScript SDK снова, я предполагаю, что функция обратного вызова не будет вызвана, потому что она уже инициализирована.

Например: http://www.devils-heaven.com/facebook-javascript-sdk-login/

+0

Так что я не хочу fbAsyncInit выскакивает на начальном этапе. Я хочу, чтобы он был активным, как только определенное условие было выполнено. Не могли бы вы дать мне совет, чтобы пойти туда? (: –

+1

ну, затем используйте логическую переменную и установите ее «true» после инициализации sdk ... – luschn

+0

Yup it works !!! (: –

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