2016-04-05 9 views
0

私がしようとしているのは、チェックされたラジオボタンを特定の値(整数7)で数えるフォームフィールドを作ることです。チェックされたラジオボタンの数が3を超える場合、システムは「Facebook」共有ダイアログを入力します。JavaScriptを使ってFacebookの共有ダイアログを再作成する方法

何もうまくいかない場合はうまくいきますが、ポップアップダイアログを閉じてさらにラジオボタンをクリックすると、カウントが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

あなたは、ページの負荷に1時間をwindow.fbAsyncInitFB.initを使用する必要があります。ボタンクリックではありません。 JavaScript SDKを再度ロードして初期化しないでください。コールバック関数が既に初期化されているため呼び出されないと仮定します。

例:http://www.devils-heaven.com/facebook-javascript-sdk-login/

+0

したがって、最初はfbAsyncInitがポップアップしないようにします。私はある条件が満たされたらそれをアクティブにしたい。そこに行くためのヒントを教えてくれませんか? (: –

+1

うん、ブール変数を使用し、それを "true"に設定してください。... – luschn

+0

それはうまくいく!!!(: –

関連する問題