这是相当骇人听闻的,但它应该可以解决 Facebook 调用你的函数两次的问题。由于没有代码,我将根据我的解决方案进行一些补充。另外,我假设 facebook 登录代码有一个回调(否则它会如何调用您的函数两次?)。
// This function is what is called when the link is clicked
// funToRun - the function that should be run after login is confirmed.
// params - parameters to pass to fToRun, as an array
clickWrapper = function(funToRun, params)
{
// Keeps track of the state of the click
var doFunction = true;
var callback = function()
{
if (doFunction)
{
funToRun.apply(this, params);
doFunction = false;
}
}
// The facebook
facebookLogin(callback);
}
在此解决方案中,您将要运行的函数包装在只运行一次的回调中,因为 doFunction 将阻止未来的回调执行任何操作。但是,每次用户点击时它至少会运行一次,因为 doFunction 是在本地管理的(因此每次点击都为真)。