运行 每 n 小时在非活动浏览器选项卡上显示一个 Javascript 代码

Run a Javascript code on an inactive browser tab every n hours

我需要每 24 小时在网页上 运行 一段 Javascript 代码。我将该代码包装在 setInterval 中。 That works, when the tab is active.但是,当我在 24 小时后回来时,我看不到它在工作。根据我在互联网上的研究,浏览器似乎取消了非活动选项卡上的脚本的优先级。我看到了基于 Web Workers 的解决方案。这个问题有更简单的替代解决方案吗?

终于,我找到了解决问题的方法。我使用“visibilityState”事件来检测何时单击了非活动选项卡,我还有一个 window 范围变量,用于记录上次执行脚本的时间 (window.globalVar.lastProfileTime)。使用两者,我介绍了这个逻辑:

const lastProfileTime = window.globalVar.lastProfileTime;
if((document.visibilityState === 'visible') &&
    ((typeof(lastProfileTime) === 'undefined') || 
    ((currentTime - lastProfileTime)  >  86400000))) { 
    // do something
}

这样,每当用户将浏览器选项卡置于视图中时,visibilityState 事件监听器就会触发,并根据 24 小时检查执行我需要的代码段。这样就不需要定时器了。