2016-12-15 68 views
1

我有一个页面上的json对象列表,并且他们每个都包含页面的id。我希望Facebook的send-to-messenger按钮在我的数据表的每一行都可见。但是当我迭代时,只有一个按钮是可见的。它不工作。如何在循环中做到这一点?多个Facebook发送到信使按钮

我有一个静态部分

<script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId: '<appid>', 
      xfbml: true, 
      version: 'v2.6' 
     }); 
    }; 
    (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> 

和动态部分

$.each(data, function (key, value) { 
//... 
<div class="fb-send-to-messenger"+ 
    'messenger_app_id="<appid>"'+ 
    'page_id="'+value.id+'"'+ 
    'data-ref="WELCOME_OPTIN_TOKEN"'+ 
    'color="blue"'+ 
    'size="standard"> 
//... 
} 

value.id是页ID

如何做到这一点?或者是否有任何JavaScript功能可以完成它?

回答

0

您正在使用JavaScript生成它们,因此您必须在将它们添加到DOM后立即使用FB.XFBML.parse()解析插件。尽管如此,请务必在FB.init之后使用FB

例如:

<script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId: '<appid>', 
      xfbml: true, 
      version: 'v2.6' 
     }); 
     $.each(data, function (key, value) { 
     //... 
     <div class="fb-send-to-messenger"+ 
      'messenger_app_id="<appid>"'+ 
      'page_id="'+value.id+'"'+ 
      'data-ref="WELCOME_OPTIN_TOKEN"'+ 
      'color="blue"'+ 
      'size="standard"> 
     //... 
     } 
     FB.XFBML.parse(); 
    }; 
    (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>