0

サーバーへの接続状態をチェックする機能があります。5 秒ごとに checkOnline を実行したい。接続が失われ、失敗し続ける場合は、エラー メッセージのフェードインも実行され続けます (点滅効果を作成します)。フェード機能が失敗したときに一度だけ実行されるように変更するにはどうすればよいですか?それでも接続をチェックし続けます。

$(function () {

var url = 'https://examplesite.com/';

function checkOnline() {
    $.get(url).done(function () {
        window.location = url;
    }).fail(function () {
        $('.errortext').hide().fadeIn(500);
        $('.loadingtext').fadeOut(500);
    });
};

window.setInterval(function () { checkOnline(); }, 5000);
setTimeout(function () { checkOnline(); }, 2000);

});
4

1 に答える 1

0

フェード効果が既に実行されているかどうかを追跡します。次に、フェードを実行する前に確認します。次に、fadeFlag という変数を使用する例を示します。

var fadeFlag = false;

function fadeOnce() {
    // Has fade happened already?
    if (fadeFlag === false) {
        // No. Then do the effects
        $('.errortext').hide().fadeIn(500);
        $('.loadingtext').fadeOut();
        fadeFlag = true;
    }
}

function checkOnline() {
    $.get(url).done(function () {
        window.location = url;
    }).fail(function () {
        // Try the fade effects
        fadeOnce();
    });
};

初めてfadeOnce()呼び出されると、エフェクトが実行されてから に設定fadeFlagされtrueます。次回fadeFlagtrueであることがわかるので、何もしません。

于 2013-10-03T11:26:06.680 に答える