gpt4 book ai didi

javascript - 检测浏览器窗口是否处于事件状态并在窗口再次处于事件状态后启动事件 [JavaScript]

转载 作者:行者123 更新时间:2023-11-30 05:46:29 25 4
gpt4 key购买 nike

想法很简单:我有指向另一个网站的按钮。每当用户单击两个以上的链接时,我想刷新一些内容(通过 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;
});

它确实会检测用户是否在页面上,但总是会以某种方式淡入淡出。谁能解释我做错了什么或给我任何想法?

谢谢延特

回答:我需要对三个函数设置 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);
});

最佳答案

我认为问题在于,当您第二次单击链接时,窗口 将始终处于焦点状态。 JS 运行速度非常快。为了克服这个问题,我认为您应该执行 setTimeout() 并将其延迟 200 毫秒左右,以便让窗口有时间“失去”焦点

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

http://jsfiddle.net/xVHgE/

编辑:为事件监听器添加延迟。不过,我认为您不能“延迟”事件,只能“延迟”它运行的功能。

window.addEventListener('focus', function() {
setTimeout( function() {
$('#test').html('focus');
focusedOrNot = 0;
} , 5000);
});

关于javascript - 检测浏览器窗口是否处于事件状态并在窗口再次处于事件状态后启动事件 [JavaScript],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com