【问题标题】:How can I prevent Facebook Connect isUserConnected function from running twice in jQuery?如何防止 Facebook Connect isUserConnected 函数在 jQuery 中运行两次?
【发布时间】:2009-03-05 04:53:32
【问题描述】:

我的 Facebook 集成有点问题。

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

问题:

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

所以,我不想等待 Facebook。有什么办法可以阻止函数多次调用我的函数?

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

【问题讨论】:

    标签: jquery facebook


    【解决方案1】:

    这是相当 hack-ish,但它应该可以解决 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 是在本地管理的(因此每次点击都为真)。

    【讨论】:

    • 是的,这就是我最终所做的。我有一个设置的参数,我检查它,如果它第一次运行则清除它,所以它不在第二次左右。
    猜你喜欢
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多