检测浏览器窗口是否处于活动状态,并在窗口再次处于活动状态后启动事件[JavaScript]
Detecting if browser window is active and start event after window is active again [JavaScript]
想法很简单:我有指向另一个网站的按钮。每当用户点击两个以上的链接时,我都希望(通过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,因为否则它们检查得太快了。谢谢你的帮助,罗摩!)所有的功劳都归功于罗默的诚实。
$(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);
});
我认为问题在于,当您第二次单击链接时,window
将始终处于焦点位置。JS运行速度相当快。为了克服这个问题,我认为你应该做一个setTimeout()
,并将其延迟200ms左右,以便给"失去"焦点的窗口时间
setTimeout(function() {userOnWebsiteOrNot(); },2000);
http://jsfiddle.net/xVHgE/
编辑:向事件侦听器添加延迟。我不认为你可以"延迟"一个事件,只是它运行的函数。
window.addEventListener('focus', function() {
setTimeout( function() {
$('#test').html('focus');
focusedOrNot = 0;
} , 5000);
});
相关文章:
- 在Angular 2中布线期间保持零部件处于活动状态
- 如何使bxslider仅在移动视图中处于活动状态
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- 使用纯javascript而非jquery使所选选项卡处于活动状态并保持非活动状态
- 我如何为列出的选项卡元素编写一个Protractor测试,它会检查它是否's是否处于活动状态
- 返回上一页时,Javascript仍处于活动状态
- Angular+bootstrap ui,检查当前选项卡是否已处于活动状态
- AJAX查询处于活动状态时禁用窗口大小调整
- 如何在Github电子原子中禁用或使浏览器窗口处于非活动状态
- 打开打印窗口处于活动状态的 PDF 链接
- 弹出窗口处于活动状态时禁用滚动
- 仅在一个窗口中播放声音,该窗口使用javascript(可能是jquery)处于活动状态(在一个网站内)
- 在Chrome扩展弹出窗口中保持Flash元素处于活动状态
- 是否有任何方法可以检测IE8中该窗口当前处于活动状态
- 当浏览器选项卡/窗口处于活动状态时进行检测
- 传单禁用缩放到标记以及如何保持弹出窗口始终处于活动状态
- 检测浏览器窗口是否处于活动状态,并在窗口再次处于活动状态后启动事件[JavaScript]
- 如何检查浏览器窗口是否处于活动状态
- 确定webkit中的窗口是否处于活动状态
- 如果窗口未处于活动状态,则运行函数