如何防止Facebook Connect isUserConnected函数在jQuery中运行两次?

时间:2009-03-05 04:53:32

标签: jquery facebook

我在Facebook整合方面遇到了一些问题。

当我的用户点击链接时,功能会检查用户是否已登录Facebook。如果他们没有登录,我会设置一个数据,然后运行Facebook登录的东西。当Facebook返回他们登录时,我会检查存储的数据并运行他们选择的原始功能。

问题:

Facebook功能运行两次。他们的留言板上有一些关于这个问题的评论,但是从连接开始以来这似乎是一个问题,并没有得到解决。

所以,我不想等Facebook。有什么方法可以阻止函数不止一次调用我的函数吗?

我可以设置“运行一次”的内容吗?问题是,一旦它运行一次,如果用户再次点击,我将需要再次运行它,所以我不能完全禁用该功能(即使这是可能的)。

1 个答案:

答案 0 :(得分:1)

这很糟糕,但它应该解决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是在本地管理的(因此每次点击都是如此)。