Skip to content

修复:使用 Offscreen Document 恢复 MV3 后台播放;限制音乐站点请求头改写范围 - #1259

Open
devil233-ui wants to merge 14 commits into
listen1:masterfrom
devil233-ui:master
Open

修复:使用 Offscreen Document 恢复 MV3 后台播放;限制音乐站点请求头改写范围 #1259
devil233-ui wants to merge 14 commits into
listen1:masterfrom
devil233-ui:master

Conversation

@devil233-ui

Copy link
Copy Markdown

No description provided.

收窄 QQ 音乐和酷狗的 declarativeNetRequest 规则:

- 移除 main_frame,避免扩展修改用户正常访问音乐网站时的页面请求;
- 排除 qq.com 和 kugou.com 自身页面发起的请求;
- 保留扩展自身 XMLHttpRequest 所需的请求头修改。

避免扩展干扰 QQ 音乐网页版登录、授权以及页面自身接口请求。
“最小化到后台”设置会将播放器切换到 background 模式。Manifest V3
不再提供持久后台页面,但 Edge 和 Chrome 仍保留
chrome.extension.getBackgroundPage 等函数入口,调用时才报
“You do not have a background page.”,导致播放器初始化失败并连带中断
Angular 页面。

本次修改使用 Manifest V3 的 Offscreen Document 承载 Howler 和音频
播放器,使关闭 Listen 1 页面后仍可继续播放:

- 新增 offscreen.html,加载播放器、MediaService 和各音乐平台 provider;
- 新增 js/offscreen.js,通过消息协议执行播放器命令并同步状态;
- 由 background.js 创建并维护 AUDIO_PLAYBACK 类型的 offscreen 文档;
- bridge.js 改为消息代理和本地状态镜像,彻底移除 MV2 后台页面调用;
- 将播放、静音和播放器连接等依赖实时状态的判断放到 offscreen 侧;
- manifest.json 增加 offscreen 权限。
新增右下角常驻悬浮按钮,点击即可让当前歌单滚动定位到正在播放
的曲目,并高亮显示。

- 新增 js/jump_to_current.js:按当前播放曲目 id 在歌单中定位对应
  行,滚动至可视区;若页面上存在可见的 .playing 高亮行则优先使用。
- listen1.html:引入新脚本;给歌单详情页(detail-songlist)的歌曲
  行补上 id 和播放高亮绑定;body 末尾新增常驻悬浮按钮。
- css/common.css:新增悬浮按钮样式;补充歌单详情页当前播放行的
  高亮样式。
方便区分当前加载的扩展对应哪个自用构建,避免新旧版本混淆。

- js/app.js 增加 BUILD_VERSION 常量(上游版本 + dev + 短提交号),
  注入 $rootScope.buildVersion 供模板使用;集中一处、便于维护。
- listen1.html 在底部播放条右上角新增常驻版本角标
  (version-badge),关于面板的版本号改用 buildVersion 动态显示。
- css/common.css 新增版本角标样式。
- 通过service worker按需重建AUDIO_PLAYBACK offscreen页面,并在就绪后转发播放命令。
- 清理过期媒体Howl并刷新一次媒体地址,避免暂停恢复时复用失效资源。
- 增加跨文档恢复和媒体地址过期回归测试,补充本地ESLint入口。
- 在offscreen播放器就绪后先恢复歌单,再执行排队的播放命令。
- 暂停时保存曲目和播放秒数,重建播放器后加载前seek到原进度。
- 切歌、清空和播放结束时清除旧进度,并增加续播回归测试。
- 离屏播放器恢复时按保存的曲目ID初始化歌单,避免先发送第1首歌曲的临时LOAD。\n- 保留暂停位置直到播放器帧确认恢复完成,首次seek未生效时自动重试。\n- 增加离屏连接和播放器位置回归,覆盖曲目选择与首帧进度。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant