Facebook javascript在登录时,调用的函数运行两次,但应该只运行一次
Facebook javascript upon login a called function runs twice but should only run once
我使用的代码来自:
http://thinkdiff.net/demo/newfbconnect1/jssdkouth2.html将Facebook整合到我的app中,我有以下功能:
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");
}
});
};
相关文章:
- Append元素在运行两次函数后不显示
- 我的所有代码在使用Webpack编译时都会运行两次
- JavaScript/JQuery表单验证运行两次
- 若在两个不同的选项卡中打开同一个页面,如何防止javascript运行两次
- jQuery停止函数运行两次
- Socket.IO:重新连接导致服务器连接代码运行两次
- nodejs - 为什么我的异步函数运行两次
- 模板函数在加载网页时运行两次
- 为什么 document.onreadystatechange 运行两次
- 必须在 Firefox 中运行两次 removeChild()
- nodeJs,运行两次sql可以将它们组合成json
- 防止脚本在执行时运行两次
- D3.js键功能在简单的选择器/数组组合上运行两次
- JS运行两次不起作用
- 如何防止 iframe 运行两次加载事件
- ng-重复运行两次(角度)
- Parse.com 云代码 - 保存运行两次后
- Jasmine在同一测试运行两次时失败
- 不明白为什么循环运行两次
- JavaScript事件侦听器运行两次