feat(background): 添加录制状态持久化和Tab切换处理

- 实现录制状态存储到本地storage,包括isRecording、recordingTabId、events和startTime
- 添加loadRecorderState和saveRecorderState函数用于状态管理
- 监听Tab切换事件,当切换离开录制Tab时发出警告并通知popup
- 监听Tab关闭事件,自动停止录制并清理状态
- 添加录制状态同步检查,确保content script状态一致
- 在开始录制前检查是否已在录制状态,避免重复录制
- 添加错误处理返回详细错误信息
- 优化回放HTML样式和脚本加载方式
- 添加Tab切换消息通信协议支持
This commit is contained in:
雨霖铃
2026-02-21 15:09:07 +08:00
parent 19b7ab141a
commit 80e510225c
5 changed files with 166 additions and 54 deletions
+4 -2
View File
@@ -9,6 +9,7 @@ export const messages = {
to: {
stopped: 'popup:stopped',
started: 'popup:started',
tabChanged: 'popup:tab-changed',
},
checkStatus: 'popup:check-status',
ready: 'popup:ready',
@@ -33,10 +34,11 @@ export const messages = {
interface ProtocolMap {
// --- Popup 相关 ---
'popup:start': () => { ok: boolean };
'popup:stop': () => { ok: boolean };
'popup:start': () => { ok: boolean; error?: string };
'popup:stop': () => { ok: boolean; error?: string };
'popup:started': () => void;
'popup:stopped': () => void;
'popup:tab-changed': (data: { currentTabId: number; recordingTabId: number | undefined }) => void;
'popup:check-status': () => { active: boolean; startTime?: number };
'popup:ready': () => void;