我使用的代码来自:
http://thinkdiff.net/demo/newfbconnect1/jssdkouth2.html
要将 Facebook 集成到我的应用程序中,我具有以下功能:
function login(response, info){
if (response.authResponse) {
showLoader(true);
var accessToken = response.authResponse.accessToken;
fqlQuery();
userInfo.innerHTML = 'Logged in';
document.getElementById("fb-auth").setAttribute("class", "fb_logout");
showLoader(false);
document.getElementById('other').style.display = "block";
}
}
function fqlQuery(){
FB.api('/me', function(response) {
//http://developers.facebook.com/docs/reference/fql/user/
var query = FB.Data.query('select email from user where uid={0}', response.id);
alert("test");
});
};
我遇到的问题是,当我登录时,函数 fqlquery 运行,但它运行了两次,我该如何防止这种情况发生? (即在屏幕上测试弹出窗口两次)。
谢谢
最佳答案
此代码运行两次的问题很可能是由于您的页面上包含多个版本的 SDK;例如包括多个点赞按钮,包括社交插件和初始化应用程序等。
您可以解决 SDK 多次初始化的问题,也可以在 fqlQuery 函数中添加互斥检查,以防止其多次运行:
function login(response, info){
if (response.authResponse) {
showLoader(true);
var accessToken = response.authResponse.accessToken;
fqlQuery();
userInfo.innerHTML = 'Logged in';
document.getElementById("fb-auth").setAttribute("class", "fb_logout");
showLoader(false);
document.getElementById('other').style.display = "block";
}
}
var hasRun = false;
function fqlQuery(){
if (hasRun === false) {
hasRun = true;
FB.api('/me', function(response) {
//http://developers.facebook.com/docs/reference/fql/user/
var query = FB.Data.query('select email from user where uid={0}', response.id);
alert("test");
}
});
};
关于javascript - Facebook javascript 在登录时调用的函数运行两次,但应该只运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8261109/