Как можно предотвратить функцию Facebook Connect isUserConnected запуск дважды в JQuery?

голоса
0

У меня есть небольшая проблема с интеграцией Facebook.

Когда мои пользователи нажимают на ссылку, функция проверяет, если пользователь вошел в Facebook. Если они не вошли в систему, я поставил часть данных, а затем запустить логин материал Facebook. Когда Facebook возвращает, что они войти в систему, я иду проверить часть данных, которые хранятся и запустить оригинальную функцию они выбрали.

Проблема:

Функция Facebook работает в два раза. Есть некоторые комментарии на их досках объявлений об этой проблеме, но, кажется, это было проблемой с самого начала подключения, и она не решается.

Таким образом, я не хочу ждать Facebook. Есть ли способ для меня, чтобы предотвратить функцию от вызова моей функции более одного раза?

Могу ли я установить что-то, что говорит запустить один раз? Проблема в том, что когда-то он запускается один раз, если пользователь щелкает снова, мне нужно будет запустить его снова, так что я не могу полностью отключить функцию (даже если это было возможно).

Задан 05/03/2009 в 05:53
источник пользователем
На других языках...                            


1 ответов

голоса
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 управляется локально (и, таким образом, правда один раз за каждый клик).

Ответил 05/03/2009 в 06:24
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more