Hvordan kan jeg unngå Facebook Connect isUserConnected funksjon fra å kjøre to ganger i jQuery?

stemmer
0

Jeg har fått litt av et problem med en Facebook-integrasjon.

Når brukerne klikker på en link, sjekker en funksjon hvis en bruker er logget inn på Facebook. Hvis de ikke er logget på, jeg satt et stykke data, og deretter kjøre Facebook login ting. Når Facebook returnerer at de har logget inn, går jeg sjekke data som ble lagret og kjøre den opprinnelige funksjonen de har valgt.

Problemet:

Facebook-funksjonen kjøres to ganger. Det er noen kommentarer på sine oppslagstavler om dette problemet, men det synes dette har vært et problem siden begynnelsen av connect, og det blir ikke behandlet.

Så, jeg ikke ønsker å vente på Facebook. Er det noen måte for meg å hindre funksjonen fra ringer min funksjon mer enn en gang?

Kan jeg sette noe som sier 'kjøres en gang'? Problemet er at når det går en gang, hvis brukeren klikker igjen, jeg må kjøre den igjen, så jeg kan ikke helt deaktivere funksjonen (selv om det var mulig).

Publisert på 05/03/2009 klokken 04:53
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Dette er ganske hack-ish, men det bør komme seg rundt spørsmålet om Facebook ringe din funksjon to ganger. Siden det er ingen kode, kommer jeg til å gjøre noen opp i den hensikt min løsning. Også, jeg antar at facebook login kode har en tilbakeringing (hvordan ellers ville det være å ringe din funksjon to ganger?).

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

I denne løsningen, er du pakke den funksjonen du vil kjøre i en tilbakeringing som bare vil kjøre en gang, siden doFunction vil hindre fremtidige tilbakeanrop fra å gjøre noe. Det vil imidlertid kjøre minst én gang hver gang brukeren klikker, siden doFunction forvaltes lokalt (og dermed er sant en gang for hvert klikk).

Svarte 05/03/2009 kl. 05:24
kilden bruker

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