这个想法很简单:我有指向另一个网站的按钮。每当用户单击了两个以上的链接时,我都想刷新一些内容(通过 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;
});
它确实检测到用户是否在页面上,但不知何故总是会发生淡入淡出。谁能解释我做错了什么或给我任何想法?
谢谢Yenthe
回答:我需要在三个函数上设置一个 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);
});