¿Cómo puedo evitar que la función Facebook Connect isUserConnected se ejecute dos veces en jQuery?

votos
0

Tengo un pequeño problema con una integración de Facebook.

Cuando mis usuarios hacen clic en un enlace, una función comprueba si un usuario está conectado a Facebook. Si no están conectados, configuro un dato y luego ejecuto las tareas de inicio de sesión de Facebook. Cuando Facebook devuelve que inician sesión, reviso la información que estaba almacenada y ejecuto la función original que seleccionaron.

El problema:

La función de Facebook se ejecuta dos veces. Hay algunos comentarios en sus tableros de mensajes sobre este tema, pero parece que esto ha sido un problema desde el comienzo de connect, y no se está abordando.

Entonces, no quiero esperar a Facebook. ¿Hay alguna manera de evitar que la función llame a mi función más de una vez?

¿Puedo configurar algo que diga 'ejecutar una vez'? El problema es que una vez que se ejecuta una vez, si el usuario vuelve a hacer clic, tendré que volver a ejecutarlo, por lo que no puedo deshabilitar completamente la función (incluso si fuera posible).

Publicado el 05/03/2009 a las 05:53
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Esto es bastante hack-ish, pero debería evitar el problema de Facebook llamando a su función dos veces. Como no hay código, voy a inventar algo para mi solución. Además, supongo que el código de inicio de sesión de Facebook tiene una devolución de llamada (¿de qué otra forma sería llamar a su función dos veces?).

// 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);
}

En esta solución, está ajustando la función que desea ejecutar en una devolución de llamada que solo se ejecutará una vez, ya que doFunction evitará que las devoluciones de llamadas futuras hagan algo. Sin embargo, se ejecutará al menos una vez cada vez que el usuario haga clic, ya que doFunction se administra localmente (y, por lo tanto, es verdadero una vez por cada clic).

Respondida el 05/03/2009 a las 06:24
fuente por usuario

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