gpt4 book ai didi

javascript - 点击加载 Facebook SDK

转载 作者:行者123 更新时间:2023-11-28 00:41:18 25 4
gpt4 key购买 nike

显然,有些人对使用 Facebook 插件的网站并不满意,因为他们不希望自己不在 Facebook 上时所做的事情被跟踪。有Shariff ,这看起来是一个公平的方法:在用户单击 Facebook 按钮之前不会加载 Facebook 插件(这里是 demo )。

我正在尝试做同样的事情(使用 JavaScript SDK)。然而,我在动态加载 SDK 时明显失败了。我也没有收到任何错误消息(是的,我确实插入了应用程序 ID)。

有什么想法吗?下面的代码取自API docs .

<html>
<body>

<script type="text/javascript">
window.onload = function() {
var e = document.getElementById('share_on_fb_link');
e.onclick = share_on_fb;

function share_on_fb() {
// Code from https://developers.facebook.com/docs/javascript/quickstart/v2.2

// Basic Setup
window.fbAsyncInit = function() {
FB.init({
appId : 'your-app-id',
xfbml : true,
version : 'v2.1'
});
};

(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'));

// Using the SDK to trigger a Share dialog
FB.ui({
method: 'share',
href: 'https://developers.facebook.com/docs/'
}, function(response){});

return false;
}
}
</script>

<a id="share_on_fb_link" href="#">Link</a>

</body>
</html>

最佳答案

我终于想出了一个可行的解决方案。首先,您必须在FB.init之后调用FB.ui。但根据https://stackoverflow.com/a/3549043/745266这并不能完全解决问题 - FB.init 正在向 facebook 发出异步请求,因此调用 FB.ui 必须延迟到 Facebook 完全设置完毕为止。以下代码应该可以工作:

window.onload = function() {
var e = document.getElementById('share_on_fb_link');
e.onclick = share_on_fb;

function share_on_fb() {
// Code from https://developers.facebook.com/docs/javascript/quickstart/v2.2

// Basic Setup
window.fbAsyncInit = function() {
FB.init({
appId : 'your-app-id',
xfbml : true,
version : 'v2.1'
});

// Delay FB.ui code until Facebook is fully initialized
FB.getLoginStatus(function(response){
// Using the SDK to trigger a Share dialog
FB.ui({
method: 'share',
href: 'https://developers.facebook.com/docs/'
}, function(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'));

return false;
}
}

关于javascript - 点击加载 Facebook SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27888999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com