Facebook Connect isUserConnected関数がjQueryで2回実行されるのを防ぐにはどうすればよいですか?
質問
Facebookの統合に少し問題があります。
ユーザーがリンクをクリックすると、関数はユーザーがFacebookにログインしているかどうかを確認します。ログインしていない場合は、データを設定してから、Facebookのログイン機能を実行します。 Facebookからログインが返されたら、保存されたデータを確認し、選択した元の機能を実行します。
問題:
Facebook関数は2回実行されます。この問題に関するメッセージボードにはコメントがありますが、これは接続の開始以来の問題であり、解決されていないようです。
だから、Facebookを待ちたくありません。関数が複数回関数を呼び出すのを防ぐ方法はありますか?
「1回実行」というメッセージを設定できますか?問題は、一度実行すると、ユーザーがもう一度クリックした場合、再度実行する必要があるため、機能を完全に無効にできないことです(可能な場合でも)。
解決
これはかなりハックっぽいですが、Facebookが関数を2回呼び出す問題を回避する必要があります。コードがないため、ソリューションの目的のためにいくつかを補います。また、facebookのログインコードにはコールバックがあると仮定しています(他にどのように関数を2回呼び出すのでしょうか?)。
// 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が将来のコールバックで何もできないようにするため、1回だけ実行されるコールバックで実行する関数をラップしています。ただし、doFunctionはローカルで管理されるため、ユーザーがクリックするたびに少なくとも1回実行されます(したがって、クリックごとに1回trueです)。
所属していません StackOverflow