2015-01-21 47 views
3

我正在開發一個項目,該項目需要功能在彈出窗口中顯示facebook,twitter,google +圖標以共享鏈接。在facebook上分享鏈接,如何重新初始化fb obj

Twitter和Google+適合我。 但在facebook的情況下,共享圖標顯示我第一次加載彈出窗口時的情況,但是在我再次加載彈出窗口之前它不會顯示,直到刷新主頁面。

我認爲這是因爲fb obj在第一次加載彈出窗口時已經初始化,防止在彈出窗口重新加載時重新初始化。

任何人都可以提出,我該如何解決這個問題。

我用下面的代碼:

的Google+

<a href="https://plus.google.com/share?url=<?php echo 'dynamically_created_link_with_querystring';?>" onclick="javascript:window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;"> 
<img src="https://www.gstatic.com/images/icons/gplus-16.png" alt="Share on Google+"/></a> 

<script> 
window.twttr = (function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0], 
    t = window.twttr || {}; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); 
    js.id = id; 
    js.src = "https://platform.twitter.com/widgets.js"; 
    fjs.parentNode.insertBefore(js, fjs); 

    t._e = []; 
    t.ready = function(f) { 
    t._e.push(f); 
    }; 

    return t; 
}(document, "script", "twitter-wjs")); 
</script> 
<a href="http://www.twitter.com/intent/tweet?url=<?php echo 'dynamically_created_link_with_querystring';?>" > 
<img src="images/Twitter_logo_blue_16.png"/></a> 

Facebook的

<script> 
(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#xfbml=1&version=v2.0"; 
      fjs.parentNode.insertBefore(js, fjs); 
     }(document, 'script', 'facebook-jssdk')); 
</script> 
<div id="fb-root"></div> 
<div class="fb-share-button" data-href="<?php echo "dynamically_generated_link_with_querstring";?>" data-layout="icon"></div> 

回答

1

使用下面的代碼修正了上述問題:

新的Facebook代碼

<a href="javascript:fbShare('<?php echo dynamically_generated_link_with_querystring ?>', 520, 350)"> 
<img src="images/fb_icon.png" height="32"width="32"/> 
</a> 
<script> 
function fbShare(url, winWidth, winHeight) { 
    var winTop = (screen.height/2) - (winHeight/2); 
    var winLeft = (screen.width/2) - (winWidth/2); 
    url = encodeURIComponent(url); 
    window.open('http://www.facebook.com/sharer.php?s=100&p[url]=' + url, 'sharer', 'top=' + winTop + ',left=' + winLeft + ',toolbar=0,status=0,width=' + winWidth + ',height=' + winHeight); 
} 
</script> 

老Facebook的代碼

<script> 
(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#xfbml=1&version=v2.0"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 
<div id="fb-root"></div> 
<div class="fb-share-button" data-href="<?php echo "dynamically_generated_link_with_querstring";?>" data-layout="icon"></div>