1. 摘要
用 TRAE SOLO 快速开发了一个 Chrome 浏览器扩展,支持键盘快捷键调节音量、拖拽悬浮窗、播放控制和歌曲信息展示。解决了在多标签页观看视频时无法快捷调节其他网页音量的问题,特别是实现了网易云音乐网页版的深度适配。
2. 背景
我是一名开发爱好者大学生 小白,平时喜欢边看 Bilibili 视频边听网易云音乐,但浏览器没有跨标签页的音量控制快捷键,每次调节音量都要切换标签页,非常影响体验。
3. 实践过程
任务拆解
-
搭建基础扩展框架(Manifest V3 + Content Script)
-
实现键盘快捷键注册和音量调节功能
-
开发可拖拽的悬浮窗 UI
-
迭代适配网易云音乐网页版(核心难点)
-
增加歌曲信息显示和播放控制
SOLO 使用的能力
-
代码生成:快速生成扩展基础框架
-
问题调试:反复迭代修复网易云音乐检测问题
-
文件操作:自动修改代码并重新打包扩展
关键开发流程
-
第一次迭代:实现基础功能
-
创建 [manifest.json](file:///workspace/extension/manifest.json)
-
编写 [content.js](file:///workspace/extension/content/content.js) 和 [background.js](file:///workspace/extension/background/background.js)
-
快捷键:
Ctrl+Shift+L召唤浮窗
-
-
网易云适配的多次迭代:
-
问题:一直提示"播放器未找到"
-
迭代1:添加
all_frames: true -
迭代2:增加 Shadow DOM 检测
-
迭代3:添加 iframe 检测和 window 对象检测
-
迭代4:增加延迟检测(0s/3s/6s)
-
踩过的坑
-
跨域 iframe 访问:网易云音乐可能把播放器放在 iframe 中,直接访问会被浏览器安全机制阻止
-
Shadow DOM:现代网页经常用 Shadow DOM 封装播放器,普通
querySelector找不到 -
动态加载:播放器不是页面加载时就初始化好的,需要延迟检测
4. 成果展示
功能特点
| 功能 | 说明 |
|---|---|
| 音量调节 | 滑块或按钮快速调节 |
| 快捷键 | Alt+↑/↓ 增减音量,Alt+M 静音 |
| 拖拽浮窗 | 可移动到屏幕任意位置 |
| 播放控制 | 上一曲/播放暂停/下一曲/收藏 |
| 歌曲信息 | 显示当前播放歌曲的标题、歌手、封面 |
扩展文件结构
Plain Text
/workspace/extension/
├── manifest.json
├── content/content.js
├── background/background.js
├── popup/popup.html/js/css
└── styles/volume-indicator.css
下载地址:[volume-control-pro.zip](file:///workspace/extension/volume-control-pro.zip)
5. 效果与总结
原本需要手动切换标签页调节音量,现在按几个快捷键就能搞定,体验提升巨大。SOLO 在这个过程中帮助快速迭代和调试,每遇到问题都能快速给出新的检测方案,大大缩短了开发周期。
可复用的方法:
-
遇到复杂 DOM 检测问题,多管齐下(audio标签、Shadow DOM、iframe、window对象)
-
动态内容一定要加延迟检测