Facebook的JavaScript执行两次,但应该只运行一次
问题描述:
我使用的代码:Facebook的JavaScript执行两次,但应该只运行一次
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");
}
});
};