Wie kann ich Facebook Connect isUserConnected Funktion läuft zweimal in jQuery verhindern?

stimmen
0

Ich habe ein bisschen ein Problem mit Facebook-Integration bekommt.

Wenn meine Benutzer auf einen Link klicken, überprüft eine Funktion, wenn ein Benutzer in Facebook angemeldet ist. Wenn sie nicht eingeloggt sind, habe ich ein Stück Daten, und dann die Facebook-Login Sachen laufen. Bei Facebook gibt, dass sie anmelden, gehe ich das Stück Daten überprüfen, die die ursprüngliche Funktion, die sie ausgewählt wurden gespeichert und ausgeführt werden.

Das Problem:

Die Facebook-Funktion läuft zweimal. Es gibt einige Kommentare auf ihren Message-Boards zu diesem Thema, aber es scheint dies seit Anfang connect ein Problem gewesen ist, und es wird nicht angesprochen werden.

Also, ich will nicht für Facebook warten. Gibt es für mich eine Möglichkeit, die Funktion von Aufruf meiner Funktion mehr als einmal zu verhindern?

Kann ich etwas, das ‚einmal ausführen‘, sagt? Das Problem ist, dass, sobald es einmal läuft, wenn der Benutzer erneut klickt, werde ich es wieder laufen muß, also kann ich nicht vollständig die Funktion deaktivieren (selbst wenn dies möglich ist).

Veröffentlicht am 05/03/2009 um 05:53
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Das ist ziemlich hack-ish, aber es sollte die Frage der Facebook-Aufruf Ihrer Funktion zweimal herumkommen. Da es keinen Code ist, werde ich einige bis zum Zweck meiner Lösung machen. Auch ich gehe davon aus, dass der Facebook Login-Code einen Rückruf hat (wie sonst wäre es Ihre Funktion zweimal anrufen?).

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

Bei dieser Lösung sind Umwickeln Sie die Funktion, die Sie in einem Rückruf ausgeführt werden sollen, die nur einmal ausgeführt werden, da DoFunction Zukunft Rückrufe von etwas zu tun, zu verhindern. Allerdings wird es mindestens einmal jedes Mal, klickt der Benutzer ausführen, da DoFunction lokal verwaltet wird (und somit gilt einmal für jeden Klick).

Beantwortet am 05/03/2009 um 06:24
quelle vom benutzer

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