获取当前阶段

如果网页处于 Active、Passive 或 Hidden 阶段,可以通过下面的代码,获得网页当前的状态。

  1. const getState = () => {
  2. if (document.visibilityState === 'hidden') {
  3. return 'hidden';
  4. }
  5. if (document.hasFocus()) {
  6. return 'active';
  7. }
  8. return 'passive';
  9. };

如果网页处于 Frozen 和 Terminated 状态,由于定时器代码不会执行,只能通过事件监听判断状态。进入 Frozen 阶段,可以监听freeze事件;进入 Terminated 阶段,可以监听pagehide事件。