Πώς μπορώ να εμποδίσω τη λειτουργία Facebook Connect isUserConnected από το τρέξιμο δύο φορές σε jQuery;

ψήφοι
0

Έχω ένα μικρό πρόβλημα με την ενσωμάτωση του Facebook.

Όταν οι χρήστες μου κλικ σε έναν σύνδεσμο, μια λειτουργία ελέγχει αν ο χρήστης έχει συνδεθεί στο Facebook. Εάν δεν είστε συνδεδεμένοι, έθεσα ένα κομμάτι των δεδομένων, και στη συνέχεια, εκτελέστε τα πράγματα σύνδεσης Facebook. Όταν το Facebook επιστρέφει ώστε να συνδεθείτε, θα πάω να ελέγξετε το κομμάτι των δεδομένων που αποθηκεύονται και να εκτελέσετε την αρχική λειτουργία που έχει επιλεγεί.

Το πρόβλημα:

Η λειτουργία του Facebook εκτελείται δύο φορές. Υπάρχουν κάποια σχόλια σχετικά με πίνακες μηνυμάτων τους για το θέμα αυτό, αλλά φαίνεται ότι αυτό είναι ένα ζήτημα από την αρχή της σύνδεσης και δεν αντιμετωπίζεται.

Έτσι, δεν θέλω να περιμένω για το Facebook. Υπάρχει κάποιος τρόπος για μένα να αποτρέψει τη λειτουργία από την κλήση της συνάρτησης μου περισσότερο από μία φορά εκεί;

Μπορώ να ορίσω κάτι που λέει «τρέξει μια φορά»; Το πρόβλημα είναι ότι τη στιγμή που θα εκτελείται μία φορά, αν ο χρήστης κάνει κλικ και πάλι, θα πρέπει να τρέξει και πάλι, οπότε δεν μπορώ να απενεργοποιήσετε πλήρως τη λειτουργία (έστω και αν αυτό ήταν δυνατό).

Δημοσιεύθηκε 05/03/2009 στις 05:53
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Αυτό είναι αρκετά hack-ish, αλλά θα πρέπει να πάρει γύρω από το θέμα του Facebook καλώντας τη λειτουργία σας δύο φορές. Δεδομένου ότι δεν υπάρχει κώδικας, είμαι πρόκειται να κάνει κάποια για το σκοπό της λύσης μου. Επίσης, υποθέτω ότι ο κωδικός σύνδεσης facebook έχει επανάκλησης (πώς αλλιώς θα ήταν να καλώντας τη λειτουργία σας δύο φορές;).

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

Σε αυτή τη λύση, είστε τυλίγοντας τη λειτουργία που θέλετε τρέχουν σε μια επιστροφή κλήσης που θα τρέξει μόνο μία φορά, αφού doFunction θα αποτρέψει μελλοντικές επιστροφές κλήσεων από το να κάνει τίποτα. Ωστόσο, θα τρέξει τουλάχιστον μία φορά κάθε φορά που ο χρήστης κάνει κλικ, αφού doFunction η διαχείριση σε τοπικό επίπεδο (και, επομένως, είναι αλήθεια μια φορά για κάθε κλικ).

Απαντήθηκε 05/03/2009 στις 06:24
πηγή χρήστη

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