首页 > 解决方案 > 每 n 小时在非活动浏览器选项卡上运行 Javascript 代码

问题描述

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

标签: javascripttimersetintervalweb-worker

解决方案


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

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

这样,每当用户将浏览器选项卡带入视图时,visibilityState 事件监听器就会触发,并根据 24 小时检查执行我需要的代码。这种方式不需要计时器。


推荐阅读