0

Facebook に FB.login リクエストを送信しています。ただし、javascript SDK がまだコア javascript リソースをロードしている間は、FB は定義されていません。

ということで、FB変数の取得にチェックを入れました

function check_FB_variable(){
            if(typeof FB=='undefined'){
                check_FB_variable();
            }else{}
           }
           check_FB_variable();

しかし、このアプローチでは再帰エラーが多すぎます。

だから、私はこのコードを

function check_FB_variable(){
            if(typeof FB=='undefined'){
                setTimeout(check_FB_variable,600);
            }else{}
           }
           check_FB_variable();

しかし、このアプローチでは、タイムアウト前の機能呼び出し機能が下に移動し、FB.loginが定義されていないというエラーが発生します。

助けてください。

4

1 に答える 1

0

JQMobiが存在するかどうかを確認するために同様のものを使用しました。正確な理由はわかりませんが、毎回関数へのポインターを呼び出すため、例外がスローされると思います。

次のような間隔でチェックインしてみてください (未テスト): var facebookChecker = window.setInterval(fbCheck, 200);

var fbCheck = function () {
    if (typeof FB != 'undefined' && facebookChecker != null) {
        window.clearInterval(facebookChecker);
        facebookChecker = null;

        // Whatever you want to do if facebook is loaded
        // Example: InitFBLogin();
    }
}

または、while ステートメント (私が使用したもの) を使用することもできます。

/*
*   This JQ Fix tries to attach Jquery to a variable to ensure it exists.
*   - Marvin Brouwer.
*/

var FixJQ = function () {
    var JQFIX = null;
    while (!JQFIX || JQFIX == null) {
        try {
            JQFIX = jQuery;
        } catch (nothing) {  jQuery =  $; };
    };
    JQFIX = null;
    return true;
};

if (FixJQ()) {
    FixJQ = null;
};

最後の 1 つの利点は、while ループが終了するまで待機するため、次のステップをこの下に置くことができることです。正直なところ、どちらが優れている/速いかはわかりませんが、一番下のものがうまくいくと確信しています。

于 2013-05-08T10:23:42.890 に答える