如何在Chrome扩展中检测新的Chrome会话启动?
正确检测Chrome新会话启动的方案
1. 明确chrome.runtime.onStartup的触发逻辑
这个监听器触发的是Chrome浏览器完全启动的时刻——即Chrome从无后台进程的关闭状态重新打开时才会触发,而非扩展自身的启动。
2. 修复onStartup不生效的配置问题
你的Manifest V3配置里存在冗余字段:action中的"type": "module",该字段不属于Chrome扩展action的合法配置项,可能导致扩展运行异常,需删除。
修正后的Manifest片段:
"action": { "default_icon": "auto_select.png", "default_popup": "auto_select.html" },
3. 正确的代码实现
在你的service worker文件(auto_select.js)中保留chrome.runtime.onStartup监听器即可:
chrome.runtime.onStartup.addListener(async () => { console.log("Chrome新会话已启动"); await chrome.storage.local.set({"status": false}); });
4. 正确的测试步骤
- 完全退出Chrome:右键任务栏Chrome图标,选择「退出」,确保所有后台进程关闭
- 重新打开Chrome,此时扩展的service worker会被激活,触发
onStartup事件 - 查看日志:打开
chrome://extensions/,找到Auto_Select扩展,点击「服务工作者」下的「检查」按钮,在弹出的控制台中可查看输出日志
5. 为什么chrome.windows.onCreated不适用
这个监听器会在任何新窗口创建时触发,包括用户在Chrome运行过程中手动新建窗口,无法准确区分是Chrome新会话启动还是普通窗口创建,不符合你的需求。
内容的提问来源于stack exchange,提问作者Wt Riker
相关产品推荐
相关产品推荐

