Hoe kan ik voorkomen Facebook Connect isUserConnected functie van tweemaal uitgevoerd in jQuery?

stemmen
0

Ik heb een beetje een probleem met een Facebook-integratie kreeg.

Toen mijn gebruikers op een link klikt, controleert een functie als een gebruiker is aangemeld bij Facebook. Als ze niet ingelogd, stel ik een stuk van de gegevens, en voer de Facebook-login spullen. Wanneer Facebook terugkeert dat zij login, ga ik controleer de data die is opgeslagen en voer de oorspronkelijke functie ze geselecteerd.

Het probleem:

De Facebook-functie loopt twee keer. Er zijn enkele opmerkingen over hun message boards over dit probleem, maar het lijkt erop dat dit is een probleem sinds het begin van connect geweest, en het is niet aan de orde.

Dus, wil ik niet te wachten op Facebook. Is er een manier voor mij om de functie te voorkomen belt mijn functie meer dan eens?

Kan ik iets met de tekst 'eenmalig uitvoeren'? Het probleem is dat als het eenmaal loopt een keer, als de gebruiker opnieuw klikt, zal ik nodig om het weer te lopen, dus ik kan niet helemaal de functie uit te schakelen (zelfs als dat mogelijk was).

De vraag is gesteld op 05/03/2009 om 05:53
bron van user
In andere talen...                            


1 antwoorden

stemmen
1

Dit is vrij hack-achtig, maar het moet krijgen rond de kwestie van Facebook uw functie twee keer belt. Aangezien er geen code, ik ga een aantal make-up voor het doel van mijn oplossing. Ook ik ben ervan uitgaande dat de facebook login code heeft een callback (hoe anders zou het uw functie twee keer bellen?).

// 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 deze oplossing, je bent het verpakken van de functie die u wilt uitvoeren in een callback die slechts één keer zal lopen, omdat doFunction zal voorkomen dat toekomstige callbacks van iets te doen. Het zal echter ten minste eenmaal per keer lopen de gebruiker klikt, omdat doFunction lokaal wordt beheerd (en dus is een keer geldt voor elke klik).

antwoordde op 05/03/2009 om 06:24
bron van user

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