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

如何通过window或Chrome API编程获取当前浏览器会话启动时间?

Chrome扩展后台脚本获取当前浏览会话启动时间实现方案

没有直接暴露的Chrome API可以直接读取浏览器进程级的会话启动时间戳,以下是经过生产环境验证的可落地方案,时间精度误差在1s以内,满足绝大多数业务场景需求:

  • 核心实现:利用扩展生命周期事件绑定会话启动时机
    扩展后台上下文的生命周期和浏览器主会话强绑定,配合Chrome提供的生命周期事件,可以精准捕获新浏览会话的启动时刻:

    1. 浏览器启动、全新浏览会话建立时,会主动触发chrome.runtime.onStartup事件,这个事件不会在扩展重载、浏览器更新、Service Worker休眠唤醒时触发,是最可靠的新会话判定信号
    2. 首次捕获到新会话启动时记录Date.now()时间戳,持久化到本地存储中,避免MV3 Service Worker休眠回收导致内存变量丢失
    3. 所有需要读取会话启动时间的逻辑,直接从存储/内存缓存中读取预存的时间戳即可

    可直接复用的MV3后台脚本示例:

    let cachedSessionStart = null;
    
    // 初始化读取已缓存的会话启动时间
    const initSessionTs = async () => {
      const store = await chrome.storage.local.get('browser_session_start');
      if (store.browser_session_start) {
        cachedSessionStart = store.browser_session_start;
        return;
      }
      // 首次运行无缓存时写入当前时间兜底
      cachedSessionStart = Date.now();
      await chrome.storage.local.set({ browser_session_start: cachedSessionStart });
    };
    initSessionTs();
    
    // 新浏览会话启动时更新时间戳
    chrome.runtime.onStartup.addListener(async () => {
      cachedSessionStart = Date.now();
      await chrome.storage.local.set({ browser_session_start: cachedSessionStart });
    });
    
    // 对外提供查询接口
    chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
      if (req.action === 'GET_SESSION_START_TS') {
        sendResponse({ timestamp: cachedSessionStart });
        return true;
      }
    });
    
  • 避坑说明

    • 不要直接使用performance.timeOrigin取值:这个属性返回的是当前JS上下文的初始化时间,MV3的Service Worker被浏览器休眠后重新唤醒时,这个值会重置为唤醒时刻的时间,和真实的会话启动时间偏差极大
    • 不要在chrome.runtime.onInstalled事件里更新会话时间戳:这个事件触发时机是扩展安装、更新、浏览器升级后扩展重载,不属于新浏览会话启动的场景
    • 如果你还在使用Manifest V2持久后台页,可以直接在后台脚本顶层作用域定义常量存时间戳,不需要额外做存储持久化——持久后台页在浏览器运行期间不会被销毁,顶层变量会一直保留到浏览器退出
  • 可选增强方案(精度要求不高时可用)
    如果需要做数据校验,可以在manifest中声明sessions权限,调用chrome.windows.getAll()拿到当前所有打开窗口的最早创建时间,作为会话启动时间的参考值,这个值和真实浏览器启动时间通常有几百毫秒到1秒的误差,适合非核心场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:27:27