Come posso impedire la funzione Facebook Connect isUserConnected esecuzione due volte in jQuery?

voti
0

Ho un po 'di un problema con un integrazione di Facebook.

Quando i miei utenti clic su un collegamento, una funzione controlla se un utente è connesso a Facebook. Se non vengono registrati nel, ho impostato un pezzo di dati, e quindi eseguire la roba di login di Facebook. Quando Facebook torna che login, vado controllare il pezzo di dati sono stati memorizzati ed eseguire la funzione originale hanno selezionato.

Il problema:

La funzione di Facebook viene eseguito due volte. Ci sono alcuni commenti sulle loro bacheche su questo problema, ma sembra che questo è stato un problema fin dall'inizio della connessione, e non è affrontati.

Quindi, io non voglio aspettare per Facebook. C'è un modo per me per evitare che la funzione di chiamare la mia funzione più di una volta?

Posso impostare qualcosa che dice 'eseguito una volta'? Il problema è che una volta che viene eseguito una volta, se l'utente fa clic di nuovo, ho bisogno di correre di nuovo, quindi non posso disattivare completamente la funzione (anche se ciò fosse possibile).

È pubblicato 05/03/2009 alle 05:53
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

Questo è abbastanza hack-ish, ma dovrebbe aggirare il problema di Facebook chiamare due volte la funzione. Dal momento che non c'è nessun codice, ho intenzione di fare un po 'per lo scopo della mia soluzione. Inoltre, sto supponendo che il codice di login di Facebook ha un callback (come altrimenti sarebbe essere chiamata due volte la funzione?).

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

In questa soluzione, si sta avvolgendo la funzione che si desidera eseguire in un callback che verrà eseguito solo una volta, dal momento che doFunction impedirà callback future di fare qualcosa. Tuttavia, sarà eseguito almeno una volta ogni volta che l'utente fa clic, in quanto doFunction è gestito a livello locale (e quindi è vero, una volta per ogni clic).

Risposto il 05/03/2009 a 06:24
fonte dall'utente

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