我有一个每秒调用一次的函数,仅当当前页面位于前台时才运行,即用户没有最小化浏览器或切换到另一个选项卡。如果用户不看它,它是没有用的,并且可能占用大量CPU,因此我不想只在后台浪费时间。
有人知道如何用JavaScript讲这个吗?
注意:我使用jQuery,因此,如果您的答案使用了jQuery,那就好了:)。
您将使用窗口的focus
和blur
事件:
var interval_id;
$(window).focus(function() {
if (!interval_id)
interval_id = setInterval(hard_work, 1000);
});
$(window).blur(function() {
clearInterval(interval_id);
interval_id = 0;
});
要回答“ Double Fire”的评论问题并保持在jQuery易用性之内:
$(window).on("blur focus", function(e) {
var prevType = $(this).data("prevType");
if (prevType != e.type) { // reduce double fire issues
switch (e.type) {
case "blur":
// do work
break;
case "focus":
// do work
break;
}
}
$(this).data("prevType", e.type);
})
问题内容: 对于每个请求,您可以通过几种不同的方式来判断会话是否已经开始,例如: 要么: 但是,如果您启动会话然后将其关闭,它们都将失败。将返回前一个会话的ID,同时将对其进行定义。同样,如果您已经有一个活动会话,则此时调用将生成一个。有没有一种明智的方法来检查会话当前是否处于活动状态,而不必诉诸输出缓冲,关闭运算符()或其他类似hacky的方法? 编辑8/29/2011:向PHP 5.4添加了新
问题内容: 假设您的页面具有相对严格的doctype和HTML标记,并且非常接近合规性,但是可能会以几种愚蠢的方式错过,这可能是因为用户内容超出了您的控制范围…表示您正在处理内容管理系统或内容管理系统的主题,在其中您可以控制一些基本结构并需要一些javascript,但是您对进入页面的其他所有内容不承担任何责任。 您如何知道(或:将由什么决定)浏览器何时决定进入“怪癖”模式,而不是使用符合标准的引
问题内容: 背景:我正在做一些用户界面测试,这些测试需要检测人们是否在关注。 具体来说,我想知道如果当前的选项卡处于非活动状态,或者浏览器窗口处于非活动状态,那么在不同的浏览器中,我的Javascript代码将受到什么影响。到目前为止,我已经挖掘了以下内容: 我有以下问题: 除了移动浏览器以外,当选项卡处于非活动状态时,桌面浏览器是否会暂停JS执行?什么时候使用哪些浏览器? 哪些浏览器减少重复次数
浏览器开启了 HSTS(HTTP Strict Transport Security)功能,它会告诉浏览器只能通过 https 访问,绝对禁止 http 方式,所以浏览器中输入http 后自动转成了 https。 疑问:如何得知浏览器是否开启了此功能? 原因:项目内需要跳转到新标签页,浏览器强制转换协议会报错(502)
令我惊讶的是,已经完成执行但尚未加入的C11std::thread对象仍然被视为活动执行线程。下面的代码示例说明了这一点(基于Xubuntu 13.03和G4.7.3构建)。有人知道C 11标准是否提供了一种检测std::thread对象是否仍在积极运行代码的方法吗?
问题内容: 我需要知道用户当前是否正在Google Chrome浏览器中查看标签页。我试图使用事件模糊和焦点绑定到窗口,但是只有模糊似乎可以正常工作。 焦点事件的工作很奇怪,仅在某些时候如此。如果我切换回另一个标签,则焦点事件将不会激活。但是,如果我单击地址栏,然后返回页面,它将。或者,如果我当前正在切换标签页,那么当我切换到另一个程序然后又回到Chrome时,它将激活。 问题答案: 2015年更