2

アイデアは単純です。別の Web サイトを参照するボタンがあります。ユーザーが 3 つ以上のリンクをクリックするたびに、(Ajax を使用して) 一部のコンテンツを更新したいと考えています。それが機能するには、ユーザーがページに戻ったときにのみイベントを開始したいので、ウィンドウがアクティブかどうかを検出する必要があります。

これ以上苦労することなく、これは私のコードです:

$(document).on("click", "a", function() {
        numberOfClicks += 1;
        if (numberOfClicks >= 2)
        {
            userOnWebsiteOrNot();
            numberOfClicks = 0;
        }
    });

    function userOnWebsiteOrNot()
    {
        if (focusedOrNot == 0)
        {
            $('#resultaat').hide().fadeIn(5000);
        }
    }

        window.addEventListener('focus', function() {
            document.title = 'focused';
            focusedOrNot = 0;
        });

        window.addEventListener('blur', function() {
            document.title = 'not focused';
            focusedOrNot = 1;
    });

ユーザーがページにいるかどうかは常に検出されますが、どういうわけか常にフェードが発生します。誰かが私が間違っていることを説明したり、アイデアを教えてくれませんか?

ありがとうイェンテ

回答: 3 つの関数で setTimeOut が必要でした。そうしないとチェックが速すぎるためです。その助けてくれてありがとうロモ!;) 正直に言うと、すべての功績は Romo にあります。

$(document).on("click", "a", function() {
        numberOfClicks += 1;
        if (numberOfClicks >= 2)
        {
            haallinks();
            setTimeout(function() {
                userOnWebsiteOrNot();
            }, 2000);
            numberOfClicks = 0;
        }
    });

    function userOnWebsiteOrNot()
    {
        if (focusedOrNot === 0)
        {
            $('#resultaat').hide().fadeIn(5000);
        }
        else
        {
            controlerenActiefOfNiet();
        }
    }

    function controlerenActiefOfNiet()
    {
        setTimeout(function() {
            userOnWebsiteOrNot();
        }, 2000);
    }

    window.addEventListener('focus', function() {
        setTimeout(function() {
            focusedOrNot = 0;
        }, 0);
    });


    window.addEventListener('blur', function() {
        setTimeout(function() {
            focusedOrNot = 1;
        }, 1000);
    });
4

1 に答える 1