谷歌chrome在86版本之后的版本为了优化chrome浏览器内核的性能以及资源占用更新了一项名为 Native Window Occlusion 本地窗口遮蔽的功能主要用于减少浏览器资源占用以及不必要的资源开销。

本地窗口遮蔽的条件

  • 浏览器最小化时
  • 屏幕被锁定时
  • 切换标签页时候
  • 页面被完全遮盖时

解决方案

 本文主要通过浏览器启动参数通过有限的条件来解决 本地窗口遮蔽 Occlusion导致无法挂机或脚本运行不正常问题

使用启动命令代码

  • disable-background-timer-throttling:解决定时器延迟问题
  • disable-backgrounding-occluded-windows:解决在某些情况下遮盖问题
  • disable-features=CalculateNativeWinOcclusion:解决在某些情况下遮盖问题
--disable-background-timer-throttling
--disable-backgrounding-occluded-windows
--disable-features=CalculateNativeWinOcclusion

测试

 通过以下简单测试代码进行测试

测试代码

setInterval(function () {
    console.log(document.visibilityState)
},1000)

测试结果

 左侧是已配置,右侧为未配置

1756958224

 通过上述可以看到配置过后的页面状态始终是 visible ,而未配置的在我们使用其他页面遮盖时则会变为 hidden