后台睡多少次都没关系,醒来读回计数,到点照常提醒。
浏览器插件 · 扩展的组成
后台脚本Background Service Worker
后台脚本(Service Worker)在后台监听事件、转发消息,但闲置约 30 秒就会被休眠,全局变量和 setTimeout 随之清空。状态存 storage,定时用 alarms。
收藏几条,闲置一分钟,再看计数
网页里的内容脚本把收藏消息发给后台,弹出页再去后台问计数。先用 AI 初稿走一遍:收藏、设提醒、闲置、打开弹出页;再切到改好的写法对照。
后台写法
只能发消息,存不了计数
全局变量 count = 0
提醒:未设置
- 还没启动
今日收藏 —
下一步:在网页上收藏几条,内容脚本会把消息发给后台。
知识点:会睡觉的后台
计数归零和提醒丢失,都发生在后台睡着的那一刻。
- MV3 的后台是 Service Worker:没事做约 30 秒就被浏览器休眠,有消息或事件时再唤醒。
- 休眠会清空全局变量;醒来后脚本从头跑,所以计数从 0 开始。
- setTimeout、setInterval 跟着后台一起睡没了;定时任务要用 chrome.alarms。
- 要留住的状态写进 chrome.storage;事件监听要写在脚本最外层,醒来时才能马上接住消息。
- 内容脚本、弹出页、后台各管各的变量,只能互相发消息,不能直接读对方的数据。
什么时候怀疑它、怎么让 AI 改
症状是「刚装好正常,过一会儿就不灵了」。
- 典型症状:计数、登录状态隔一会儿就没了;定时提醒偶尔不来;点按钮第一次没反应、第二次才行。
- 不是它的问题:网页上完全看不到扩展插入的东西——那先查内容脚本。
- 跟 AI 说:「后台是会休眠的 Service Worker,状态存
chrome.storage,定时用chrome.alarms」。 - 验收时什么都不做等一分钟以上,再打开弹出页或触发功能。
- 在
chrome://extensions点「Service Worker」链接,能看到后台的日志和报错。
正反例:同一个收藏计数
功能一样,差别只在计数存在哪。
你测试时一直在点,一切正常;用户放着不动一分钟,计数归零,提醒不来。
快速自测
用户说:「装好时番茄钟提醒很准,后来经常不响。」AI 的代码里写着 setTimeout(remind, 25 * 60 * 1000)。最可能的原因是?
继续查证
术语的技术定义和行为以这些一手或权威资料为准。
下一步学
和本知识点经常一起出现的概念。