Как я могу запретить запуск функции Facebook Connect isUserConnected дважды в jQuery? - PullRequest
0 голосов
/ 05 марта 2009

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

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

Проблема:

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

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

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

1 Ответ

1 голос
/ 05 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...