在 facebook 上分享 link,如何重新初始化 fb obj
share link on facebook, how to reinitialize fb obj
我正在开发一个项目,该项目需要在弹出窗口中显示 facebook、twitter、google+ 图标以共享 link.
的功能
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>
使用以下代码修复了上述问题:
新 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>
我正在开发一个项目,该项目需要在弹出窗口中显示 facebook、twitter、google+ 图标以共享 link.
的功能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>
<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>
使用以下代码修复了上述问题:
新 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>