You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用Visibility API实现标签页状态切换时的Favicon圆点控制?

利用Page Visibility API实现标签页非活跃状态提示圆点

核心原理

借助浏览器原生的Page Visibility API监听标签页的活跃/非活跃状态,当标签页切换到后台(非活跃)时显示提示圆点,切回前台(活跃)时自动隐藏。

实现步骤

1. HTML结构

添加一个用于展示圆点的固定元素:

<!-- 标签页状态提示圆点 -->
<div id="tab-status-dot" class="hidden"></div>

2. CSS样式

设置圆点的外观与显示规则,默认隐藏,非活跃状态下显示:

#tab-status-dot {
  position: fixed;
  top: 12px;
  right: 12px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background-color: #5865F2; /* 参考Discord的蓝色圆点样式 */
  z-index: 9999;
  transition: opacity 0.2s ease;
}

/* 默认隐藏状态 */
#tab-status-dot.hidden {
  opacity: 0;
  pointer-events: none;
}

/* 非活跃状态显示 */
#tab-status-dot.visible {
  opacity: 1;
}

3. JavaScript逻辑

监听页面可见性变化事件,切换圆点的显示状态:

const statusDot = document.getElementById('tab-status-dot');

// 监听标签页可见性变化
document.addEventListener('visibilitychange', () => {
  if (document.hidden) {
    // 标签页切到后台,显示圆点
    statusDot.classList.replace('hidden', 'visible');
  } else {
    // 标签页切回前台,隐藏圆点
    statusDot.classList.replace('visible', 'hidden');
  }
});

// 页面加载时初始化状态
window.addEventListener('load', () => {
  if (document.hidden) {
    statusDot.classList.add('visible');
    statusDot.classList.remove('hidden');
  }
});

关键细节说明

  • document.hidden:API提供的核心属性,返回true代表标签页处于非活跃状态,false代表活跃。
  • visibilitychange事件:当标签页可见性发生变化时自动触发,是实现状态监听的核心。
  • 样式中的transition属性让圆点的显示/隐藏带有平滑过渡,提升视觉体验。

内容的提问来源于stack exchange,提问作者Cheerio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:15:15