javascript - 每 n 小时在非活动浏览器选项卡上运行 Javascript 代码
问题描述
我需要每 24 小时在网页上运行一段 Javascript 代码。我将该代码包装在 setInterval 中。That works, when the tab is active. 但是,当我 24 小时后回来时,我认为它不起作用。从我在互联网上的研究来看,非活动标签上的脚本似乎被浏览器降低了优先级。我看到了基于 Web Workers 的解决方案。这个问题有更简单的替代解决方案吗?
解决方案
最后,我有一个解决我的问题的方法。我使用“visibilityState”事件来检测何时单击了非活动选项卡,我还有一个窗口范围变量,用于记录我的脚本上次执行的时间(window.globalVar.lastProfileTime)。使用两者,我介绍了这个逻辑:
const lastProfileTime = window.globalVar.lastProfileTime;
if((document.visibilityState === 'visible') &&
((typeof(lastProfileTime) === 'undefined') ||
((currentTime - lastProfileTime) > 86400000))) {
// do something
}
这样,每当用户将浏览器选项卡带入视图时,visibilityState 事件监听器就会触发,并根据 24 小时检查执行我需要的代码。这种方式不需要计时器。
推荐阅读
- docker - Fluentd 无法使用 fluent-plugin-elasticsearch 连接到 AWS elasticsearch 服务
- ibm-doors - DOORS DXL:如何在触发器中放置 DXL 代码?
- glsl - 在 Vulkan 中添加对浮点原子操作的支持
- r - 删除 knitr 在 R markdown 文档中添加的注释
- azure-blob-storage - C# Azure.Storage.Blobs SDK 如何列出和压缩容器中的所有文件并将压缩文件存储在另一个容器中
- javascript - 为什么 nodejs 对我的代码表现得很奇怪?
- android - 将 AVD 连接到 VMWare 来宾
- laravel - Illuminate\Database\QueryException 与消息'SQLSTATE [23000]:完整性约束违规:1062 重复条目
- c# - C#向pastebin添加多行会破坏白名单系统
- axios - jwt acess_token 和 refresh_token 机制:axios : 如何持续检查 access_token 是否有效