アイデアは単純です。別の 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);
});