Cum pot preveni funcția Facebook Connect isUserConnected de la care rulează de două ori în jQuery?

voturi
0

Am un pic de o problemă cu o integrare Facebook.

Atunci când utilizatorii mei clic pe un link, o funcție verifică dacă un utilizator este conectat la Facebook. În cazul în care acestea nu sunt autentificat, am stabilit o bucată de date, și apoi executați chestii de conectare Facebook. Atunci când Facebook se întoarce pe care le login, mă duc verifica bucata de date care au fost stocate și rula funcția originală au selectat.

Problema:

Funcția de Facebook se execută de două ori. Există unele comentarii cu privire la panourile lor mesaj cu privire la această problemă, dar se pare că acest lucru a fost o problemă de la începutul de conectare, și nu este abordată.

Deci, eu nu vreau să aștepte Facebook. Există vreo modalitate pentru mine de a preveni funcția de asteptare funcția mea de mai multe ori?

Pot seta ceva care spune „rula o singură dată“? Problema fiind că, odată ce se execută o singură dată, în cazul în care utilizatorul face clic din nou, am nevoie să-l executați din nou, așa că nu pot dezactiva complet funcția (chiar dacă acest lucru ar fi posibil).

Întrebat 05/03/2009 la 05:53
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

Acest lucru este destul de hack-ish, dar ar trebui sa în jurul valorii de problema Facebook de asteptare funcția de două ori. Din moment ce nu există nici un cod, am de gând să facă unele până în scopul soluția mea. De asemenea, sunt presupunând că codul de autentificare Facebook are un apel invers (cum altfel ar fi de asteptare funcția de două ori?).

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

În această soluție, sunteți ambalaj funcția pe care doriți să executați într-un apel invers, care va rula doar o singură dată, deoarece doFunction va preveni callbacks viitoare să facă nimic. Cu toate acestea, va rula cel puțin o dată de fiecare dată când utilizatorul face clic, deoarece doFunction este gestionat la nivel local (și, astfel, este adevărat o dată pentru fiecare clic).

Publicat 05/03/2009 la 06:24
sursa de către utilizator

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