Comment puis-je empêcher la fonction Facebook Connect isUserConnected de courir deux fois dans jQuery?

voix
0

J'ai un peu d'un problème avec une intégration Facebook.

Lorsque mes utilisateurs cliquent sur un lien, une fonction vérifie si un utilisateur est connecté à Facebook. Si elles ne sont pas connectés, je mis un morceau de données, puis exécutez les trucs de connexion Facebook. Lorsque Facebook retourne que leur connexion, je vais vérifier le morceau de données stockées et exécuter la fonction d'origine qu'ils ont sélectionné.

Le problème:

La fonction Facebook fonctionne deux fois. Il y a quelques commentaires sur leurs forums de discussion sur cette question, mais il semble que cela a été un problème depuis le début de connexion, et ce ne sont pas abordés.

Donc, je ne veux pas attendre Facebook. Est-il possible pour moi d'empêcher la fonction d'appeler ma fonction plus d'une fois?

Puis-je définir quelque chose qui dit «courir une fois? Le problème étant qu'une fois qu'il exécute une fois, si l'utilisateur clique à nouveau, je vais devoir l'exécuter à nouveau, donc je ne peux pas désactiver complètement la fonction (même si cela était possible).

Créé 05/03/2009 à 05:53
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

C'est assez hack ish, mais il devrait contourner le problème de Facebook appelant votre fonction deux fois. Comme il n'y a pas de code, je vais faire un peu pour le but de ma solution. En outre, je suppose que le code de connexion facebook a un rappel (sinon comment serait-il d'appeler votre fonction deux fois?).

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

Dans cette solution, vous enroulant la fonction que vous voulez exécuter dans un rappel qui ne fonctionnera une fois, étant donné que DoFunction empêchera callbacks avenir de faire quoi que ce soit. Cependant, il se déroulera au moins une fois à chaque fois que l'utilisateur clique, puisque DoFunction est géré localement (et est donc vrai une fois pour chaque clic).

Créé 05/03/2009 à 06:24
source utilisateur

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